理論的に最適な値は次のとおりです。
- 保守性指数:100。値が大きいほど保守性が高いことを示します。
- 循環的複雑度:1。コードがとることができるさまざまなパスの数。
- 継承の深さ:1。継承ツリーで、これより上のクラス定義の数。インターフェイスは含まれません。
- クラス結合:0。このエンティティが依存している他のエンティティの数。
いくつかの一般的なステートメントを作成することは可能ですが、ハードで高速な「適切な」範囲はありません。
- メソッドごとの循環的複雑度が高いということは、メソッドが複雑になりすぎていることを示しています。
- (フレームワークではなく、独自のクラスの)継承の深さが約3または4を超えることは、ソフトウェアのドメインに実際にはない抽象的な関係を不必要に表現している可能性があることを示す問題の兆候です。
- 一般に、低クラスの結合の方が優れていますが、やむを得ない場合もあります。ここでは依存関係の理由がはるかに少ないため、可能な限り、名前空間間の依存関係を最小限に抑える必要があります。
プロジェクトは、本質的に何もせず、役に立たないことによって、4つの値すべてに同時に到達することしかできませんでした。何もせず、何にも依存しないソフトウェアは確かに保守可能ですが、クライアントの資金をあまり有効に活用していません。
したがって、すべての複雑さはトレードオフです。追加のいわゆるinherent複雑さは、プログラムにさらに洗練されたものをエンコードし、機能セットを拡張できるようにします。避けたいのは偶発的実装が不十分または不十分なために複雑になることです。