パラメータが多い関数、何が問題なのか
パラメータが多い関数は呼び出すたびに順序を間違えやすく、特に真偽値フラグが混ざっていると呼び出し側だけでは意味を把握しにくくなります。このツールは全パラメータ数、真偽値フラグ数、オプション引数数を入力すると複雑度スコアを算出し、リファクタリングが必要かどうかを示します。
複雑度スコアの算出方法
| 項目 | 重み |
|---|---|
| パラメータ1個あたり | +8点 |
| 真偽値フラグ1個あたり | +10点 |
| オプション引数1個あたり | +4点 |
リファクタリングの始め方
スコアが高く出た場合は、関連するパラメータを1つのオプションオブジェクトにまとめることから始めましょう。真偽値フラグは呼び出し側の可読性を大きく損なうため、フラグごとに関数を分割するか、列挙型(enum)の値に置き換えることをおすすめします。
よくある質問
パラメータは何個からが問題ですか?
一般的に4個を超えると可読性が落ち始め、6個以上ならオプションオブジェクトやビルダーパターンへのリファクタリングを検討すべきです。
真偽値フラグはなぜ複雑度をより高めますか?
真偽値フラグは呼び出し側で意味が分かりにくく、関数内部の分岐ロジックを増やしテストケースを指数的に増加させます。
スコアが高い場合はどうリファクタリングすべきですか?
関連するパラメータを1つのオブジェクトにまとめる、または真偽値フラグの代わりに別の関数に分割することを検討してください。