【发布时间】:2010-05-20 01:25:54
【问题描述】:
在一个方法中,我在计算其他变量时使用i 和j 作为临时变量。一旦不再需要 i 和 j ,有什么惯用的方式摆脱它们?我应该为此目的使用块吗?
i = positions.first
while nucleotide_at_position(i-1) == nucleotide_at_position(i)
raise "Assumption violated" if i == 1
i -= 1
end
first_nucleotide_position = i
j = positions.last
while nucleotide_at_position(j+1) == nucleotide_at_position(j)
raise "Assumption violated" if j == sequence.length
j += 1
end
last_nucleotide_position = j
背景:我想在不再需要 i 和 j 时删除它们,以便方法中的任何其他代码都不会使用它们。减少我的代码出错的机会。我不知道这个概念的名称——它是“封装”吗?我能想到的最接近的概念是(警告:TV Tropes 的链接 - 工作时不要访问)Chekhov'sGun 或 YouHaveOutlivedYourUsefulness。
另一种选择是将代码放入它们自己的方法中,但这可能会降低可读性。
【问题讨论】:
标签: ruby scope encapsulation idioms