perl - 如果全局变量不会改变,是否应该将它们作为参数传递给子程序?

标签 perl language-agnostic

我有一个全局定义的哈希引用,其值在添加后永远不会改变。因此,子程序不会修改散列,只会访问它。

我应该将哈希引用传递给将使用其值的子例程,还是子例程应该引用全局变量本身?

此外,为了可读性,为子例程中定义的散列的相关值设置一个缩放器变量可能是不好的做法(以避免长 $hash_ref->{"abc"} 语法,而是使用 $abc)?

谢谢。我问是因为我想避免会导致我的代码变得困惑和冗余的事情。

最佳答案

它没有什么区别。

  • 亲:
  • 很明显,sub 使用了数据。
  • 骗局:
  • 很多不必要的打字。

  • 全局数据的全局变量(文件范围的词法)是完全可以接受的。

    关于perl - 如果全局变量不会改变,是否应该将它们作为参数传递给子程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16798538/

    相关文章:

    perl - 如何查询 sqlite 的某些行,即将其分成页面(perl DBI)

    regex - Unix/Linux/FreeBSD 使用 Perl Regex 查找命令

    perl - 在perl中计算汉明距离

    language-agnostic - 标准如何保证数据结构使用连续内存?

    performance - If block 与Switch-Case block

    algorithm - 使用 levenshtein 距离和 Euristics 匹配字符串

    language-agnostic - 如果我想培养作为软件开发人员的技能(使用Java,Python,C,C++),必须具有哪种类型的设置/工具?

    regex - Perl 正则表达式重复匹配

    html - 如何使用 Perl 正则表达式删除未使用的嵌套 HTML span 标记?

    math - 根据玩家的选择分配团队的算法