Estructura interna de funciones
dato opened this issue · comments
En materias anteriores se le dio mucha importancia a no repetir código, aunando todas las copias en una única función común con los argumentos apropiados.
En esta materia queremos practicar que el ese código sea
simple, legible y conciso, pues cuanto menos código haya en una función,
y más simple y fácil de entender sea, más probable es que no albergue errores
tras revisarlo (o corregirlo).
Estas tres cualidades —sencillez, legibilidad y brevedad— están muy relacionadas pero, a veces, en conflicto (esto es, empujan en direcciones contrapuestas o contradictorias). Gran parte de lo que se debe practicar es encontrar el mejor equilibrio.
Como ejemplo completo, se ofrece a continuación una función inventada contrato_vencido()
, y se proporcionan cinco ejemplos de implementación, de los cuales una entrega aprobable usaría la tercera o la cuarta versión.¹
(¹) La cuarta versión sería, en mi opinión, una excelente resolución para esta materia. La quinta versión también está muy bien, y elicita un debate entre cuál de las dos es más legible. La segunda versión es de la que queremos aprender a alejarnos.
Enlace al ejemplo: https://github.com/dato/i/blob/862a451/4/contrato.c#L26-L131