🔤

rubocopのMetrics/AbcSizeについての個人的な考え

に公開

結論

  • Metrics/AbcSize は Metrics/CyclomaticComplexity を含んでいると言える
  • ABCの内、コンディション(条件分岐)が最も可読性を下げる要因
  • アサイン(代入)、ブランチ(メソッド呼び出し)だけで構成されたメソッドは宣言的なので十分読みやすい
  • コンディション(条件分岐)だけ警戒すれば十分 = Metrics/CyclomaticComplexity だけで十分
  • アサイン(代入)、ブランチ(メソッド呼び出し)も評価対象に含めると、その分メソッドの評価が厳しくなり、メソッド分割の圧力が強まり、結果としてメソッドのネストが起きやすい = スパゲッティ化しやすい
    • それを避けるために Metrics/AbcSize を緩めると、その分だけ条件分岐も許容されるようになり、可読性は上がりにくくなる
  • 全てのケースに当てはまるわけではないが、概ねの傾向としては当てはまると思っている

補足: 「手続き的」と「宣言的」の参考記事: 処理の記述を並べる代わりに欲しい結果を書く「宣言的プログラミング」 | 日経クロステック(xTECH) 
補足: 「スパゲッティ化」のイメージの参考記事: マトリョーシカ人形のようなメソッド設計を避ける - give IT a try

Discussion