2009-07-24 9 views
0

エクリプス(RedRails)次のコードで「Feature envy」文句を言う:Eclipseが私のコードで "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の方法をどのように抽出できるのか分かりません。

+1

あなたは周りのコードのビットより多くを投稿することができますか?私はこれに餌を与えることができたが、フィービー・エンヴァイについては不平を言うことができなかった - ありがとう – mikej

+1

あなたは全体の方法と、リークの警告メッセージの全文を投稿してください。現在のバージョンのReekでFeatureEnvyを報告することはできません。 – kevinrutherford

答えて

2

Reekは、同じクラスの2つのプロパティを追加しているため、計算は実際にはStringに属している必要があることを伝えています。文字列の長さを追加する場合、これは当然のナンセンスですが、あなたのケースでコード$&(完全マッチした文字列)を使用して単純化することができます。

input_text[$&.size..-1] 
+0

厳密には当てはまりません。まず、Reekは上記のようにコードに対してFeatureEnvyを報告しません。第2に、$ 1と$ 2は異なるオブジェクトなので、Reekはこのコードをどちらにも移すことを提案しません。 – kevinrutherford

関連する問題