2009-07-24 32 views
0

的Eclipse(RedRails)在下面的代碼抱怨「Feature envy」:爲什麼Eclipse會在我的代碼中抱怨「功能嫉妒」氣味?

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的方法。

+1

你可以發佈更多的周邊代碼?我有一個去喂這個臭鼬但無法讓它抱怨功能嫉妒 - 謝謝 – mikej 2009-07-25 15:24:04

+1

你可以請張貼整個方法,以及reek的警告信息的全文?我無法得到此報告與當前版本的reek報告FeatureEnvy。 – kevinrutherford 2009-07-26 20:36:26

回答

2

Reek告訴你,因爲你正在添加兩個屬於同一類的屬性,所以計算應該屬於String。當添加字符串長度,這當然是無稽之談,但在你的情況下,代碼可以使用$&(完全匹配的字符串)被簡化:

input_text[$&.size..-1] 
相關問題