W sekcji Kiedy stosować wyjątek w The Pragmatic Programmer , książka pisze, że zamiast:
retcode = OK;
if (socket.read(name) != OK) {
retcode = BAD_READ;
}
else {
processName(name);
if (socket.read(address) != OK) {
retcode = BAD_READ;
}
else {
processAddress(address);
if (socket.read(telNo) != OK) {
retcode = BAD_READ;
}
else {
// etc, etc...
}
}
}
return retcode;
, oni wolą:
retcode = OK;
try {
socket.read(name);
process(name);
socket.read(address);
processAddress(address);
socket.read(telNo);
// etc, etc...
}
catch (IOException e) {
retcode = BAD_READ;
Logger.log( "Error reading individual: " + e.getMessage());
}
return retcode;
po prostu dlatego, że wygląda ładniej. Jestem wszystkim dla kodu schludny, jednak nie jest konieczne łapanie wyjątków wąskim gardłem wydajności?
Rozumiem, że powinniśmy zrezygnować z drobnej optymalizacji starszego kodu (przynajmniej 99% razy), jednak z tego, co wiem, wychwytywanie wyjątków należy do klasy kodu, która ma zauważalne opóźnienie w czasie wykonywania. Dlatego zastanawiałem się, jakie jest uzasadnienie, że drugi fragment kodu jest lepszy od pierwszego?
A raczej jaki kod wolisz?