Pregunta

Mi pregunta tiene los scripts Bash y PowerShell en mente, pero supongo que se aplica a otros idiomas.

Es mi entender que el propósito de una función es realizar la misma (o muy similar) varias veces tarea. Esto disminuye la cantidad de código en el guión y también hace que sea más fácil de mantener.

Con esto en mente, si usted descubre que su script sólo pide tiempo una función entonces no hay razón para que la función de existir como una función . En su lugar, usted debe tomar el código de la función y colocarlo en el lugar donde se llama a esa función.

Una vez dicho todo esto, aquí está mi pregunta:

Si tengo un guión complicado, que debe mover cada sección del código en su propia función a pesar de que cada función sólo se llama una vez? Esto aumentaría enormemente la lectura del guión porque su lógica (las funciones) todo sería en la parte superior del guión y el flujo de ejecución sería en la parte inferior de la secuencia de comandos. Desde 50 líneas de código estarían representados por sólo 1 línea, que sería mucho más fácil de entender lo que el guión está haciendo.

¿Hay otras personas hacen esto? ¿Hay desventajas a este enfoque?

¿Fue útil?

Solución

Tener funciones también aumenta la legibilidad. Por lo que una escritura del golpe puede tener un aspecto mejor y sea más fácil de seguir si se lee:

getParams()

startTask()

doSomethingElse()

finishTask()

# implement functions below

incluso si las implementaciones de función son simples, se lee mejor.

Otros consejos

legibilidad del código es de hecho una de las principales preocupaciones, por lo general (hoy en día) más importante que la enorme cantidad de código o el rendimiento. Por no mencionar que Inlining llamadas a funciones no necesariamente tienen beneficios de rendimiento notable (lenguaje muy específicos).

Así que un montón de desarrolladores (me atrevo a decir que el mejor de la raza :-) crear pequeñas funciones / métodos como usted describe, a la partición de su código en partes lógicamente coherentes.

Una función realiza una tarea bien definida. Si usted tiene una función de mega que hace 5 cosas diferentes, que sugiere fuertemente que debería estar llamando 5 funciones más pequeñas.

Es mi entender que el propósito de una función es realizar la misma (o muy similar) varias veces tarea.

Bueno, es mi entendimiento de que una función es una entidad discreta que lleva a cabo un procedimiento específico, tarea bien definida.

Con esto en mente, si usted descubre que su script llama a una función de notificarse al menos una vez, luego que está haciendo su trabajo.

centrarse en ser capaz de leer y entender fácilmente su código.

Tener código claro, legible es definitivamente más un pago que tener miedo de llamadas a funciones generales. Eso es sólo una optimización prematura.

Además, el objetivo de la función es llevar a cabo una tarea en particular. Una tarea puede ser una sub-tarea, no hay nada malo en ello!

Leer este libro

http://www.amazon.com/Clean-Code-Handbook-Software -Craftsmanship / dp / 0132350882

Aquí hay algunas citas del libro.

"pequeña! La regla primera de las funciones es que deben ser pequeñas. La segunda regla es que las funciones que debe ser menor que ".

"funciones deben hacer una cosa. Deben hacerlo well.They debe hacerlo sólo."

En lo que respecta a mi conocimiento, una función representa una secuencia de pasos que se convierten en una parte del programa más amplio. Llegando a su pregunta, estoy totalmente de acuerdo que la función (s) mejorar la legibilidad y la reutilización. Pero al mismo tiempo rompe en pedazos cada cosa podría no ser una buena práctica. Por último, quiero dar una declaración: "! Cualquier cosa en exceso no es beneficiosa"

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top