Creo que la denominación de funciones es muy importante aquí.
Una función muy diseccionada puede ser muy autodocumentada. Si cada proceso lógico dentro de una función se divide en su propia función, con una lógica interna mínima, el comportamiento de cada declaración puede ser razonado por los nombres de las funciones y los parámetros que toman.
Por supuesto, hay un inconveniente: los nombres de las funciones. Al igual que los comentarios, estas funciones altamente específicas a menudo pueden desincronizarse con lo que realmente está haciendo la función. Pero , al mismo tiempo, al darle un nombre de función adecuado, hace que sea más difícil para justificar el alcance del alcance. Se vuelve más difícil hacer que una subfunción haga algo más de lo que claramente debería hacer.
Por lo que sugeriría esto. Si cree que una sección del código podría dividirse, aunque nadie más lo llame, hágase esta pregunta: "¿Qué nombre le daría?"
Si responder a esa pregunta le lleva más de 5 segundos, o si el nombre de la función que elija es decididamente opaco, es muy probable que no sea una unidad lógica separada dentro de la función. O al menos, que no está lo suficientemente seguro acerca de lo que realmente está haciendo esa unidad lógica para dividirla adecuadamente.
Pero hay un problema adicional que pueden encontrar las funciones muy diseccionadas: corrección de errores.
Es difícil rastrear errores lógicos dentro de una función de más de 200 líneas. ¿Pero rastrearlas a través de más de 10 funciones individuales, mientras intentas recordar las relaciones entre ellas? Eso puede ser aún más difícil.
Sin embargo, de nuevo, la auto-documentación semántica a través de los nombres puede jugar un papel clave. Si cada función tiene un nombre lógico, entonces todo lo que necesita hacer para validar una de las funciones de hoja (además de la prueba de unidad) es ver si realmente hace lo que dice que hace. Las funciones de las hojas tienden a ser cortas y enfocadas. Entonces, si cada función individual de la hoja hace lo que dice que debería, entonces el único problema posible es que alguien les haya pasado las cosas incorrectas.
Entonces, en ese caso, puede ser una ventaja para la corrección de errores.
Creo que realmente se reduce a la cuestión de si se puede asignar un nombre significativo a una unidad lógica. Si es así, entonces probablemente pueda ser una función.