在进行GUI编程时(在Perl中),我经常会遇到这样的情况,即我有一个主包/函数x调用包/函数y,后者又调用包/函数z。但是,当我在x中有一个变量(例如对小部件的引用)时,我必须通过y传递它,因为我不想使用全局变量。
有更好的方法吗?随着我的程序越来越大,我似乎有越来越多的变量通过包/函数传递,以便我可以在子包/函数中访问它们。
答案 0 :(得分:3)
您似乎认为这是一个错误。这是一个功能!这意味着如果您在几个月或几年内回到该计划,您就知道数据的使用方式和位置。
请注意,在一般空信息中,不要将变量a
传递到y
以转到z
。原因是y
可能会生成自己的a
版本;仅从x
或z
看,你就无法用全局变量来判断。如果您通过y
传递,至少您知道y
从x
生成的内容开始。
请注意,您可能还会发现需要重构代码:
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
在某些情况下。