코드가 커지기 시작할 때 잠시 동안 나를 괴롭히는 매우 간단한 질문이 있습니다.
중첩 된 함수 호출의 긴 경로를 통과 할 때 매개 변수를 전역 변수로 바꿔야합니까?
많은 함수가 공유 변수를 수정할 수 있기 때문에 전역 환경으로 인해 프로그램 상태를 예측할 수 없게 만들 수 있지만 여전히 전역 공간으로 인해 작업이 매우 쉽다는 것을 알고 있습니다.
설명해 드리겠습니다 :
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다른 변수로 다른 변수 로 작동하려고 할 때 글로벌 환경에서 재사용 성을 잃어 버립니다 globalX.
나는 자바 스크립트로 프로그래밍하고 있기 때문에 실제로 디자인 패턴을 사용하지 않기 때문에 이것이 일어나고 있다고 생각합니다. 중간 프로젝트의 경우 하나의 스크립트 거래와 모든 언어가 같은 느낌입니다.
조언이 있습니까? 패턴? 필요한 경우 더 구체적으로 지정할 수 있습니다.