Eclipse(RedRails)在以下代码中抱怨“Feature envy”:
if input_text =~ /^(---\s*\n.*?\n?)(---.*?)/m
content_text = input_text[($1.size + $2.size)..-1] # warning in $1
header = YAML.load($1)
@content = content_text.strip()
@title = header["title"]
end
我的理解是我可以安全地忽略这个警告。但是我在徘徊为什么会产生这个警告。我无法理解如何为$1.size
和$1
提取方法。
答案 0 :(得分:2)
Reek告诉你,因为你要添加同一个类的两个属性,所以计算实际上应该属于String
。当添加字符串长度时,这当然是无稽之谈,但在您的情况下,使用$&
(完整匹配的字符串)可以简化代码 :
input_text[$&.size..-1]