Javaプロジェクトの1つです。最近、SonarLintの使用を開始しました。コード分析の出力では、非常に多くの重大なコードにおいのアラートが示されています。
Critical code smell: Refactor this method to reduce its Cognitive Complexity.
循環的複雑性について聞いたことがありますが、認知的複雑性については聞いていません。グループへの私の質問:
私はこれを経験しました link ですが、すべての質問に対する答えを得ることができませんでした。
前もって感謝します。
人間は7つのエンティティ+/- 2( wikipedia )について簡単に覚えることができます。誰かがコードを読む必要があるとき、この制限にぶつかる可能性があります。追跡するローカル変数が多すぎる場合や、if/forステートメントが多すぎる場合があります。すべての場合において、アルゴリズムの精神的な全体像を把握するのが難しいため、コードが何をすべきかを理解するのが難しくなります。
業界標準:いいえ.
読みやすさと保守性:シンプルで読みやすいコードのデバッグ/改善が容易です。
メソッドまたはその他の部分に適用:一部の人間が理解したいすべてのもの。デザインを説明しようとして、20以上のクラスを追跡する必要がある場合、私は失われます。インターフェースをすばやく操作する必要があるが、10ビットの状態を覚えておく必要がある場合は、できません。
依存する特定の基準:コードを理解するために覚えておく必要のあるものの量。
ベストプラクティス:より適切に定義された関数を作成します。関連する概念をグループ/パッケージに抽出します。コード内のネストレベルの数を減らします(ネストされたコードを読む場合、そこに到達した条件を覚えておく必要があります)。任意の時点で使用中の変数の数を減らします(関数の抽出に最適です)。