像这样:
puts "Today my ostrich laid #{@eggs_laid - @stillborn - @wolves_ate} valid eggs."
如果这实际上是我需要这个特定计算的唯一地方,那么制作valid_eggs
函数有什么意义吗?
像这样:
puts "Today my ostrich laid #{@eggs_laid - @stillborn - @wolves_ate} valid eggs."
如果这实际上是我需要这个特定计算的唯一地方,那么制作valid_eggs
函数有什么意义吗?
它本质上并不坏。但是如果表达式很复杂,就会降低代码的可读性。在这里,我把两个片段放在这里,哪个更好读?
puts "Today my ostrich laid #{@eggs_laid - @stillborn - @wolves_ate} valid eggs."
valid_eggs = @eggs_laid - @stillborn - @wolves_ate
puts "Today my ostrich laid #{valid_eggs} valid eggs."
这是一篇评论文章:是与否。
如果它是“复杂的” 1它可能属于其他地方。
如果它是“简单的” 2这不是问题。
这一切都归结为可读性、可维护性、适当的重用以及不做任何愚蠢的事情。
1. 对于不同的“复杂”值。2.对于“简单”的不同值。
绝对不。将代码放入#{...}
插值器是 Ruby 中有趣的合法部分。为了可读性,您可以考虑:
puts "Today my ostrich laid %s valid eggs." % ( @eggs_laid - @stillborn - @wolves_ate )
但请注意,%
插值和#{...}
插值是两种不同的乐趣,不能完全互换。
我认为这很清楚 - 至少你的变量名是有意义的。纯粹主义者可能会说你应该将它提取到一种方法中——但实际上——YAGNI(你不需要它)也适用于红宝石。
如果你需要在第二个地方做,那么我会把它作为一种方法。你已经考虑过了。
显然,正如其他答案所述,这是值得商榷的。
您绝对应该提取操作的一种情况是当它们具有副作用时。
只要表达是参照透明的,它只是品味和主观可读性的问题。