Как я могу избежать передачи переменных через несколько функций? - PullRequest
1 голос
/ 17 января 2011

Во время программирования GUI (на Perl) у меня часто бывает случай, когда у меня есть основной пакет / функция x, которая вызывает пакет / функцию y, которая, в свою очередь, вызывает пакет / функцию z.Но когда у меня есть переменная в x (например, ссылка на виджет), к которой мне нужно обратиться в z, я должен затем передать ее через y, потому что я не хочу использовать глобальные переменные.

IsЕсть ли лучший способ сделать это?Поскольку моя программа становится больше, мне кажется, что все больше и больше переменных передаются через пакеты / функции, чтобы я мог получить к ним доступ в подпакетах / функциях.

1 Ответ

3 голосов
/ 17 января 2011

Вы, кажется, думаете, что это ошибка.Это особенность!Это означает, что если вы вернетесь к программе через месяцы или годы, вы будете знать, как и где используются ваши данные.

Имейте в виду, что это , а не в целом пустая информация дляпередайте переменную от 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

в некоторых случаях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...