4

JavaコードでPMDを実行すると、表示されるエラーメッセージの1つが「クラスSTWebには20の循環的複雑性があります」です。通常、私のJavaクラスはこの方法です

public class STWeb implements STWebService {

  public String getData(RequestData request)
  {
    validate(request);
  }

  public boolean validate(Data[] formdata)
  {
    if(formdata.length==1)
    //do this 
    else if(formdata.length==3)
    //do this 
    else if(formdata.length==4)
    //do this 
    else if(formdata.length>4)
    //do this 
    else if(formdata.length==2)
    {
      if(formdata[0].getName.equals("OIY"))
      {
      }
    / And many more if else here 
    }
  }
}

ご覧のとおり、私のビジネス要件に従って、多くの if を使用してクラスをコーディングする必要があります。それ以外の場合は、サイクロコンプレックスが増加した理由を教えてください。これの標準に従って実行可能なアプローチは何ですか??

4

5 に答える 5

10

循環的複雑度の測定は、品質管理に使用するのではなく、不良コードの指標/警告として使用する必要があります。CC 自体の価値よりも、その背後にあるコードに注目する必要があります。

validateリファクタリングによってメソッドを小さなメソッドに分割することでメソッドの複雑さを軽減することはできますが、クラス全体の CC は同じままです。

コードが読みやすく、次にそれを見る必要がある人にとって意味がある限り、より高い CC を持つことはそれほど重要ではありません。

于 2011-11-11T03:10:09.333 に答える
2

次のようなものがあると役立ちます。

if (a) {
   return true;
} else if (b) {
   return true;
} else if (c) {
   return true;
} else {
   return false;
}

次に、これを次のように置き換えます。

return a || b || c;
于 2012-08-17T02:20:55.807 に答える
0

循環的複雑度は、存在するコード パスの量を示しているようです。そのため、多くの if と if else を使用する必要があるという要件がある場合は、そのメッセージを無視できます。

于 2011-11-11T02:58:22.697 に答える