Una recente correzione mi ha richiesto di andare oltre il codice scritto da altri membri del team, dove ho trovato questo (è C #):
return (decimal)CostIn > 0 && CostOut > 0 ? (((decimal)CostOut - (decimal)CostIn) / (decimal)CostOut) * 100 : 0;
Ora, ammettendo che ci sia una buona ragione per tutti quei cast, questo sembra ancora molto difficile da seguire. C'era un piccolo bug nel calcolo e ho dovuto districarlo per risolvere il problema.
Conosco lo stile di codifica di questa persona dalla revisione del codice, e il suo approccio è che più breve è quasi sempre meglio. E naturalmente c'è un valore in questo: abbiamo visto catene inutilmente complesse di logica condizionale che potrebbero essere riordinate con pochi operatori ben piazzati. Ma è chiaramente più abile di me nel seguire catene di operatori stipati in una singola affermazione.
Questa è, ovviamente, in definitiva una questione di stile. Ma qualcosa è stato scritto o ricercato nel riconoscere il punto in cui la ricerca della brevità del codice smette di essere utile e diventa una barriera alla comprensione?
Nota:
Il motivo per i cast è Entity Framework. Il db ha bisogno di archiviarli come tipi nullable. Decimale? non è equivalente a Decimal in C # e deve essere lanciato.