Aparte: escribí esto en respuesta a la pregunta de Dallin (ahora cerrada) pero todavía siento que podría ser útil para alguien, así que aquí va
Creo que la razón para atomizar las funciones es 2 veces mayor, y como menciona @jozefg, depende del lenguaje utilizado.
Separación de intereses
La razón principal para hacer esto es mantener diferentes partes de código separadas, por lo que cualquier bloque de código que no contribuya directamente al resultado / intento deseado de la función es una preocupación separada y podría extraerse.
Supongamos que tiene una tarea en segundo plano que también actualiza una barra de progreso, la actualización de la barra de progreso no está directamente relacionada con la tarea de ejecución prolongada, por lo que debe extraerse, incluso si es el único fragmento de código que usa la barra de progreso.
Digamos que en JavaScript tiene una función getMyData (), que 1) crea un mensaje de jabón a partir de parámetros, 2) inicializa una referencia de servicio, 3) llama al servicio con el mensaje de jabón, 4) analiza el resultado, 5) devuelve el resultado. Parece razonable, he escrito esta función exacta muchas veces, pero en realidad eso podría dividirse en 3 funciones privadas que solo incluyen el código para 3 y 5 (si es así) ya que ninguno de los otros códigos es directamente responsable de obtener datos del servicio .
Experiencia de depuración mejorada
Si tiene funciones completamente atómicas, su seguimiento de pila se convierte en una lista de tareas, que enumera todo el código ejecutado con éxito, es decir:
- Obtén mis datos
- Inicializar referencia de servicio
- Respuesta de servicio analizado - ERROR
sería mucho más interesante que descubrir que hubo un error al obtener los datos. Pero algunas herramientas son aún más útiles para depurar árboles de llamadas detallados que, por ejemplo, tomar Microsofts Debugger Canvas .
También entiendo su preocupación de que puede ser difícil seguir el código escrito de esta manera porque al final del día, debe elegir un orden de funciones en un solo archivo donde su árbol de llamadas sería mucho más complejo que eso. . Pero si las funciones se nombran bien (intellisense me permite usar 3-4 palabras mayúsculas y minúsculas en cualquier función, por favor, sin retrasarme) y estructurado con una interfaz pública en la parte superior del archivo, su código se leerá como un pseudocódigo que es, con mucho, la forma más fácil de obtener una comprensión de alto nivel de una base de código.
FYI: esta es una de esas cosas de "haz lo que digo, no lo que hago", mantener el código atómico no tiene sentido a menos que seas implacablemente coherente con eso, en mi humilde opinión, lo que no soy.