Una solución de error reciente me obligó a revisar el código escrito por otros miembros del equipo, donde encontré esto (es C #):
return (decimal)CostIn > 0 && CostOut > 0 ? (((decimal)CostOut - (decimal)CostIn) / (decimal)CostOut) * 100 : 0;
Ahora, permitiendo que haya una buena razón para todos esos lanzamientos, esto todavía parece muy difícil de seguir. Hubo un error menor en el cálculo y tuve que desenredarlo para solucionar el problema.
Sé que el estilo de codificación de esta persona proviene de la revisión del código, y su enfoque es que más corto es casi siempre mejor. Y, por supuesto, hay valor allí: todos hemos visto cadenas de lógica condicional innecesariamente complejas que podrían ser puestas en orden con unos pocos operadores bien situados. Pero es claramente más adepto que yo a las siguientes cadenas de operadores agrupados en una sola declaración.
Esto es, por supuesto, en última instancia, una cuestión de estilo. Pero, ¿se ha escrito o investigado algo para reconocer el punto en el que luchar por la brevedad del código deja de ser útil y se convierte en una barrera para la comprensión?
Nota al pie:
El motivo de las conversiones es Entity Framework. El db necesita almacenar estos como tipos anulables. ¿Decimal? no es equivalente a Decimal en C # y se debe convertir.