У меня очень простой вопрос, который преследует меня некоторое время, когда мой код начинает расти.
Должны ли параметры заменяться глобальными переменными при прохождении длинных маршрутов вызовов вложенных функций?
Я понимаю, что глобальная среда может сделать состояние программы непредсказуемым, потому что многие функции могут изменять общие переменные, но, тем не менее, глобальное пространство делает вещи такими простыми.
Позвольте мне объяснить себя:
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.
}
Заменяется:
globalX;
functionA(){
globalX = something
functionB()
}
...
...
...
finallyDoSomethingWithX(){
globalX += 1
}
Я чувствую, что второй способ дает столько свободы программированию, потому что параметры могут накапливаться легко, а также иногда могут быть очень ограничены, когда код должен быть повторно использован, но в то же время я чувствую, что функция потеряет свою модульность, когда она связана с переменной. в глобальной среде, также теряя возможность многократного использования, когда, например, я хочу работать finallyDoSomethingWithX
с другой переменной, отличной от tha globalX
.
Я думаю, что это происходит со мной, потому что я на самом деле не использую шаблоны проектирования, потому что я программирую на Javascript, который для меня ощущается как язык «один сценарий имеет дело со всеми» для средних проектов.
Любые советы? узоры? Я могу быть более конкретным, если это необходимо.