我想知道Perl的最佳实践是如何通过直接访问$Module::varName
来获取(或更重要的是设置)某个模块的全局变量,以防万一该模块没有为其提供getter/setter方法。
它对我来说很难闻的原因是它绕开了封装的事实。仅仅因为我可以在Perl中做到这一点,我不确定是否应该(假设实际上有替代方法,例如在模块中添加getter/setter)。
最佳答案
如果变量是公共(public)API的一部分,则不会违反封装。 (如果不是,那是另一回事。)
我认为直接访问是更可取的,因为它可以让您利用动态作用域:
local $Module::varName = 42;
这使得与其他使用
Module
的代码发生冲突的可能性较小。关于perl - 直接获取(尤其是直接设置Perl模块的全局变量)是否合适?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2922896/