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