我发现自己在 Ruby 中使用的常见模式如下:
foo = foos.find {|foo| foo.attribute == some_other_attribute }
在检查阴影的 IDE 中,该行提示 foo
正在被阴影。
一个诱人的替代方案如下:
foo = foos.find {|f| f.attribute == some_other_attribute }
但是这种方法破坏了许多 IDE 中的搜索功能 - 在复杂的 block 中搜索 f
将是一场噩梦,而在项目中搜索 foo.attributes
将会错过这行代码。
我一直倾向于的丑陋的解决方案只是在变量名前加上它的范围:
foo = foo.find {|block_foo| block_foo.attribute == some_other_attribute }
虽然这对于短 block 来说没问题,但任何更长的 block 都会开始产生大量噪音,因为所有 block_
都会污染代码。
是否有标准的 Ruby 方式来完成此类任务?具体来说,我正在寻找满足以下条件的解决方案:
- 变量名称不缩写
- 变量名称仍然描述它们所包含的对象类型
- IDE 不会提示影子
最佳答案
我更喜欢让左侧的变量更具描述性:
blue_box = boxes.find { |box| box.color == BLUE }
即使是像 found_foo
这样更通用的东西,我也会认为更具描述性。
关于避免查找结果出现阴影的 Ruby 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22866950/