【发布时间】:2014-06-02 10:17:14
【问题描述】:
在这个例子中,方法定义中的最后一个english 对我来说似乎是不必要的。我把它拿出来,代码也能正常工作。书中为何包含它?有什么我不知道的约定吗?
class Integer
def to_eng
if self == 5
english = 'five'
else
english = 'fifty-eight'
end
english
end
end
# I'd better test on a couple of numbers...
puts 5.to_eng
puts 58.to_eng
【问题讨论】:
-
它在计算上是等效的,但更清楚地表达了你对人类的意义。相关地,它还可以保护您,以防上面的代码发生更改。
-
不仅如此——变量的存在毫无意义。你可以用
if self == 5 then 'five' else 'fifty-eight' end替换方法体。 -
@Darshan,我不同意。所有那些不必要的代码行和不必要的局部变量都是混乱的。 Imo,读者可以更快地解析
self == 5 ? 'five' : 'fifty-eight'(如@Donatas 所建议的那样),误读的机会更少。至于在末尾重复变量以防止代码更改,它可能会产生相反的效果。 -
@CarySwoveland 我绝对同意你的观点,如果该方法的那部分是可以争取的。我假设这是一个简化示例,用于询问有关最终
english语句的值的问题。有很多方法看起来像这样,在计算上不需要放置最终语句,但为了清楚起见,我试图解释这个理由。