2011-01-17 3 views
1

GUI 프로그래밍을하는 동안 (Perl에서), 필자는 종종 패키지/함수 y를 호출하는 주 패키지/함수 x를 가지고 있는데, 이는 패키지/함수 z를 호출합니다. 하지만 z에서 액세스해야하는 변수 x (예 : 위젯 참조)가있을 때 전역 변수를 사용하지 않으므로 y를 통해 전달해야합니다.여러 함수를 통해 변수를 전달하지 않으려면 어떻게해야합니까?

더 좋은 방법이 있나요? 내 프로그램이 커지면서 하위 패키지/함수로 액세스 할 수 있도록 점점 더 많은 변수가 패키지/함수를 통해 전달되는 것처럼 보입니다.

+0

당신이 * 할 * 세계화를 피하고 싶습니다. – ijw

+0

감사합니다. 저는 문장을 편집하여 "나는 전역을 사용하고 싶지 않습니다."라고 읽었습니다. 이것은 제가 의미했던 것입니다. – Lozzer

답변

3

당신은 이것이 버그라고 생각하는 것 같습니다. 그것은 기능입니다! 즉, 몇 달 또는 몇 년 후에 프로그램으로 돌아 가면 데이터가 어디에서 어떻게 사용되고 있는지 알 수 있습니다.

z에 도착하는 변수 ay을 통해 전달하는 일반 빈 정보 하지 있음을 유의하십시오. 그 이유는 y이 대신 a의 자체 버전을 생성 할 수 있기 때문입니다. x 또는 z 만 보아도 전역 변수로는 알 수 없습니다. y을 전달하면 적어도 yx에 의해 생성 된 것으로 시작한다는 것을 알고 있습니다. 당신은 또한 당신이 당신의 코드를 리팩토링해야 할 사실을 발견 염두에

에 보관할 :

x produces a 
x calls y with a 
    y produces b 
    y calls z with a and b 

경우에

x produces a 
x calls y 
    y produces and returns b 
x calls z with a and b 

로 변경 될 수 있습니다.

+0

분명한 답변을 보내 주셔서 감사합니다. 나는 그것이 빈 정보가 아님을 지적한다. – Lozzer

관련 문제