🔤
rubocopのMetrics/AbcSizeについての個人的な考え
結論
- Metrics/AbcSize は Metrics/CyclomaticComplexity を含んでいると言える
- ABCの内、コンディション(条件分岐)が最も可読性を下げる要因
- アサイン(代入)、ブランチ(メソッド呼び出し)だけで構成されたメソッドは宣言的なので十分読みやすい
- コンディション(条件分岐)だけ警戒すれば十分 = Metrics/CyclomaticComplexity だけで十分
- アサイン(代入)、ブランチ(メソッド呼び出し)も評価対象に含めると、その分メソッドの評価が厳しくなり、メソッド分割の圧力が強まり、結果としてメソッドのネストが起きやすい = スパゲッティ化しやすい
- それを避けるために Metrics/AbcSize を緩めると、その分だけ条件分岐も許容されるようになり、可読性は上がりにくくなる
- 全てのケースに当てはまるわけではないが、概ねの傾向としては当てはまると思っている
補足: 「手続き的」と「宣言的」の参考記事: 処理の記述を並べる代わりに欲しい結果を書く「宣言的プログラミング」 | 日経クロステック(xTECH)
補足: 「スパゲッティ化」のイメージの参考記事: マトリョーシカ人形のようなメソッド設計を避ける - give IT a try
Discussion