如何避免通过多个函数传递变量?

时间:2011-01-17 01:07:18

标签: user-interface function global-variables packages

在进行GUI编程时(在Perl中),我经常会遇到这样的情况,即我有一个主包/函数x调用包/函数y,后者又调用包/函数z。但是,当我在x中有一个变量(例如对小部件的引用)时,我必须通过y传递它,因为我不想使用全局变量。

有更好的方法吗?随着我的程序越来越大,我似乎有越来越多的变量通过包/函数传递,以便我可以在子包/函数中访问它们。

1 个答案:

答案 0 :(得分:3)

您似乎认为这是一个错误。这是一个功能!这意味着如果您在几个月或几年内回到该计划,您就知道数据的使用方式和位置。

请注意,在一般空信息中,要将变量a传递到y以转到z。原因是y可能会生成自己的a版本;仅从xz看,你就无法用全局变量来判断。如果您通过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

在某些情况下。