我已经看到了代码,其中只有两个相当静态的元素被映射,例如具有开始和结束日期的时间间隔,但是map()
正在使用而不是用于映射的显式代码,例如
{ map { ... } qw(start end) } # vs.
{ start => ..., end => ... }
哪种方式更受欢迎,为什么?
该map
形态可能不那么简洁,但看起来更多的功能(如函数式编程),所以我想这就是为什么它可能优于明确的代码也许是更加干燥.
但是,它对我来说看起来不太清晰,因为后面有更多的逻辑,并且映射也应该效率较低,因为它调用a调用并包含更多的原子操作.
编辑
在编程中存在一个相互矛盾的目标:KISS(保持它{选择2来自:小,简单,愚蠢}).使用map
稍微复杂的代码.
假设你不只是将两个项目设置为相同的常量或类似的微不足道的东西,我希望map
版本更简洁.
IMO,支持该map
版本的主要观点是,您知道将使用相同的过程来生成这两个值.不仅是为了DRY,还因为它消除了任何人可能会有一个微妙的变化而另一个没有的担忧.
至于性能问题......如果你的用例对任何可能的重要差异都具有足够的性能敏感性,那么你不应该首先使用Perl.切换到编写良好的C(不是C#,而不是C++,而不是目标C - 只是简单的C)将比微优化具有更大的性能影响,无论是单独分配两个值还是使用循环来设置它们.但无论如何,你的用例敏感的几率几乎为零.