J'ai une question très simple qui me hante depuis un moment lorsque mon code commence à grandir.
Les paramètres doivent-ils être remplacés par des variables globales lorsqu'ils passent par de longues routes d'appels de fonctions imbriquées?
Je comprends que l'environnement global peut rendre l'état d'un programme imprévisible car de nombreuses fonctions peuvent modifier des variables partagées, mais malgré tout, l'espace global rend les choses si faciles.
Je m'explique:
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.
}
Remplacé par:
globalX;
functionA(){
globalX = something
functionB()
}
...
...
...
finallyDoSomethingWithX(){
globalX += 1
}
Je pense que la deuxième façon donne tellement de liberté pour programmer parce que les paramètres peuvent s'accumuler facilement et peuvent également être très restrictifs parfois lorsque le code doit être réutilisé, mais en même temps, j'ai l'impression que la fonction perdra sa modularité lorsqu'elle est liée à une variable dans l'environnement global, perdant également la réutilisabilité lorsque, par exemple, je veux fonctionner finallyDoSomethingWithX
avec une autre variable différente tha globalX
.
Je pense que cela m'arrive parce que je n'utilise pas réellement de modèles de conception parce que je programme en Javascript, ce qui pour moi ressemble à un langage à script unique pour tous les projets moyens.
Des conseils? motifs? Je peux être plus précis si besoin.