Tengo una pregunta muy simple que me ha estado persiguiendo por un tiempo cuando mi código comienza a crecer.
¿Deberían los parámetros ser reemplazados por variables globales cuando pasan por rutas largas de llamadas a funciones anidadas?
Entiendo que el entorno global puede hacer que el estado de un programa sea impredecible porque muchas funciones pueden modificar las variables compartidas, pero aún así, el espacio global hace las cosas tan fáciles.
Déjame explicarte:
functionA(){
x = something
functionB(x)
}
functionB(x){
functionC(x)
}
functionC(x){
finallyDoSomethingWithX(x)
}
finallyDoSomethingWithX(x){
x += 1 //Very dummy example ignoring pass by value, not reference.
}
Reemplazado por:
globalX;
functionA(){
globalX = something
functionB()
}
...
...
...
finallyDoSomethingWithX(){
globalX += 1
}
Creo que la segunda forma da tanta libertad para programar porque los parámetros pueden acumularse fácilmente y también pueden ser muy restrictivos a veces cuando se debe reutilizar el código, pero al mismo tiempo siento que la función perderá su modularidad cuando está relacionada con una variable en el entorno global, perdiendo también la reutilización cuando, por ejemplo, quiero operar finallyDoSomethingWithX
con otra variable diferente de tha globalX
.
Creo que esto me está sucediendo porque en realidad no estoy usando patrones de diseño porque estoy programando en Javascript, que para mí se siente como un lenguaje de un solo script para todos los proyectos medianos.
¿Algún consejo? ¿patrones? Puedo ser más específico si es necesario.