在Perl中使用散列时,引用密钥是个好主意吗?
我正在开发一个非常大的传统Perl代码库,并试图采用Damian Conway在Perl Best Practices建议的很多最佳实践。我知道最好的做法总是与程序员一个有趣的主题,但希望我能得到一些好的答案这一个没有开始火焰战争。我也知道,这可能是很多人不会争论,因为它是一个小问题,但我想尝试获得一个完整的指南,以遵循我的方式通过这个代码库。
在Perl Best Practices book by Damian Conway,有这个例子显示了如何对齐有助于一段代码的可读性,但它没有提到(在书中的任何地方,我可以找到)任何关于引用哈希键。
$ident{ name } = standardize_name($name); $ident{ age } = time - $birth_date; $ident{ status } = 'active';
难道这不是更好的用引号来强调你不使用裸词吗?
$ident{ 'name' } = standardize_name($name); $ident{ 'age' } = time - $birth_date; $ident{ 'status' } = 'active';
解决方法
当指定常量字符串哈希键时,应始终使用(单个)引号。例如,$ hash {‘key’}这是最好的选择,因为它避免了需要考虑这个问题,并导致一致的格式化。如果你有时候抛弃引号,当你的键包含内部连字号,空格或其他特殊字符时,你必须记住添加它们。在这些情况下,您必须使用引号,导致格式不一致(有时无引号,有时引号)。引用的键也更可能由编辑器进行语法高亮。
这里有一个例子,使用“引用有时,没有引用其他时间”的约定可以让你陷入麻烦:
$settings{unlink-devices} = 1; # I saved two characters!
这将编译只是罚款使用严格,但不会完全符合你的期望在运行时。哈希键是字符串。字符串应根据其内容进行引用:单引号用于文字字符串,双引号用于允许可变插值。引用你的散列键。这是最安全的会议,最简单的理解和跟随。