Considera che ho alcuni codici che utilizzano una logica diversa per alcuni casi speciali, ad esempio:
bool compareRatio(unsigned int a,unsigned int b,unsigned int x,unsigned int y){
if(x==0){
return false;
}else if(y==0){
return true;
}else{
return (float)a/x<(float)b/y;
}
}
e per eliminare casi speciali, posso riscriverlo:
bool compareRatio(unsigned int a,unsigned int b,unsigned int x,unsigned int y){
return a*y<b*x;
}
e per altre situazioni simili, come la ricerca in array con la dimensione dell'array case speciale = 0:
int[] a={1,4,2,7,5,1};
if(a.length == 0 ){
}else{
for(int i=0;i<a.length;i++){
}
}
Posso anche riscriverlo come:
int[] a={1,4,2,7,5,1};
for(int i=1;i<a.length;i++){
}
Ma la mia domanda è, dovremmo tendere ad eliminare casi speciali, o semplicemente lasciarli nel codice? O dipende dai casi? Penso che eliminare il caso speciale possa ridurre il numero di codici, ma i codici diventano meno diretti. In alternativa, lasciare casi speciali può rendere il codice brutto, ma penso che sia più facile da mantenere e possa ricordare ad altri programmatori che questa logica aziendale ha alcune condizioni speciali. Quale stile è preferito?