如何以更优雅的方式写下这三个案例?

Nic*_*nov 5 ruby coding-style conditional-statements

我希望这种逻辑能够以更优雅和紧凑的方式编写,在我看来,我错过了一些东西:

if value < min_rate
  min_rate
elsif value > max_rate
  max_rate
else
  value
end
Run Code Online (Sandbox Code Playgroud)

Mar*_*mas 3

这是完全不同的东西:

[min_rate, value, max_rate].sort[1]
Run Code Online (Sandbox Code Playgroud)

  • 如果我在实际代码中遇到这种情况,我会找到作者并打他太聪明,然后重构它。理解这个片段的作用(弄清楚排序如何与各种可能性相互作用并说服自己中间值将是原始值或适当的界限)的认知负荷对于决策的固有复杂性来说太高了。如果它被分解成一个名字良好的小方法,它可能是可以接受的,但作为循环中间的一个简单的保护计算,它是有味道的。然而,这是一种聪明的代码高尔夫。 (2认同)