Nella sezione Quando utilizzare l'eccezione in The Pragmatic Programmer , il libro scrive che invece di:
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;
, preferiscono:
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;
semplicemente perché sembra più ordinato. Sono all per il codice più recente, tuttavia non è necessario rilevare eccezioni a un collo di bottiglia delle prestazioni?
Posso capire che dovremmo rinunciare all'ottimizzazione minuscola per il codice più ordinato (almeno il 99% delle volte), tuttavia da quello che so, le eccezioni di cattura appartengono alla classe di codice che ha un ritardo notevole in runtime. Quindi mi chiedevo qual è la giustificazione che il secondo pezzo di codice sia preferito rispetto al primo codice?
O meglio, quale codice preferiresti?