4
シナリオ私は私の$type_id
変数は、IDの特定のセットの1つであるかどうかを確認する必要がありサイクロマティック複雑スイッチ/ケースとの違いとin_array
。
可読性以外の理由もなく、私は
それらのほとんどは一般的なケースにダウンカスケードswitch($type_id) {
case Type::SOME_TYPE:
case Type::SOME_OTHER_TYPE:
...
//do stuff
と一緒に行きました。
しかし、これにより、PHPMDがうぬぼれ始めるまでの循環的複雑さが増します。
代わりにin_array()
を使ってみましょう。
if (in_array($type_id, [
Type::SOME_TYPE,
TYPE::SOME_OTHER_TYPE,
...
])) {
//do stuff
}
質問
この時点でPHPMDは文句を停止し、ちょうどin_array()
機能の後ろに隠れて、まだそこに循環的複雑度ではないでしょうか?
これは、CCが読み取り不能のために「混乱」としか考えられていないことを意味しますか? – Alec
@Alecいいえ、必ずしも読みにくいというわけではありません。メソッド/関数について把握または推論できることの詳細。あるコードを通して多くの可能な分岐がある場合、この入力xに対して出力するのがより難しくなり、出力はyになります。これは、関数をカバーするために必要な単体テストの数に直接影響します。 Wikipediaの記事はかなり徹底的です:https://en.wikipedia.org/wiki/Cyclomatic_complexity – Gordon