Las funciones no solo se usan para minimizar la duplicación de código, también se usan para dividir una función larga en otras más pequeñas para aumentar la legibilidad, así como hacer que el código se auto comente. Sin embargo, esta ganancia no es directamente inversamente proporcional al número de LOC por función o método; de lo contrario tendríamos toneladas de funciones, todas las cuales solo contienen una o dos líneas de código.
Esto me lleva a preguntarme: ¿existe un número óptimo de LOC por función? Si es así, ¿qué es y se desvía entre idiomas?
Respuestas:
En lugar del número de líneas, el criterio que usaría es que cada función debe hacer solo una cosa y hacerlo bien.
fuente
Una vieja regla general es que una función debe ser completamente visible en la pantalla, sin necesidad de desplazarse.
La idea básica es que, si no puede ver toda la función a la vez, la función es demasiado compleja y debe dividirla en partes más básicas.
Si bien esta regla es muy práctica y útil, la regla formal es que debe mantener solo un paso lógico en una función. Una función solo hace un trabajo elemental, si puede dividir el trabajo en más piezas elementales, la función debe dividirse.
fuente
No hay ninguno.
Las pantallas se hacen más grandes, los tamaños de fuente son más pequeños. Las reglas generales no funcionan tan bien cuando las personas tienen pulgares de diferentes tamaños.
Sé conciso. Si su función hace varias cosas, probablemente sea una buena idea dividirla en otras más pequeñas.
fuente
Smalltalk tiene una forma ligeramente inusual de reducir el tamaño de los métodos. Cuando escribe código, lo escribe en un widget llamado Navegador. Un navegador tiene dos partes principales, divididas horizontalmente. Tu código va en la mitad inferior.
Por defecto, un navegador no es muy grande. Puede colocar 5 o 6 líneas antes de que deba comenzar a desplazarse. El desplazamiento, por supuesto, es un poco irritante.
Entonces, en Smalltalk, el entorno "lo alienta" a escribir métodos cortos, de como máximo alrededor de 6 líneas de longitud. (Eso suele ser suficiente; Smalltalk es un lenguaje bastante conciso).
fuente
El número ideal de líneas de código en un método es variable. Básicamente, solo desea escribir el código suficiente para hacer lo que debe hacerse dentro del contexto de la definición de la función. Pienso en esto como una especie de Principio de responsabilidad única, solo aplicado a un método en lugar de una clase.
Cuando un método tiene mucha lógica y varios pasos para completar, entonces tiene sentido dividir el método en varios pasos discretos. Cada uno de estos pasos se extraería en nuevos métodos según sea necesario.
Cuanto menos haga cada método, más fácil será definirlo y más sencillo de comprender y gestionar. No hay nada de malo en tener cientos de métodos si los necesita. Además, de acuerdo con el SRP que mencioné anteriormente, se hace más fácil extraer nuevas clases cuando los métodos se han separado en piezas más pequeñas y manejables.
fuente
La respuesta es, por supuesto, 42 .
Importante tener en cuenta: ninguna función puede violar el SRP , o debe enfrentarse a la inquisición española .
Algunos consejos sobre cómo reducir la cantidad de líneas:
fuente
Aquí hay algunas pistas:
Si tiene problemas para escribir el comentario explicando el propósito y el uso de la función, es demasiado largo.
Si está tentado a escribir un comentario explicando la actividad de una sección de código en la función, entonces la función es demasiado larga.
Si está pegando código de otra función, ambos son demasiado largos (extraiga ese código como una función separada).
Si necesita una convención de codificación para separar los miembros de datos de clase de las variables locales, entonces la función es demasiado larga y la clase tiene demasiados miembros.
Si necesita tomar notas mientras lee una función, es demasiado larga.
Tener 'toneladas' de funciones, cada una de una o dos líneas de largo, no es necesariamente algo malo. Descubrí que esas pequeñas funciones se reutilizaban mucho más de lo que inicialmente esperaba.
fuente