オブジェクト指向言語のコード行に対するクラスの良い比率は何ですか? [閉まっている]
-
06-07-2019 - |
質問
オブジェクト指向言語(C ++、C#、Javaなど)のコード行に対するクラスの数の比率はどれくらいですか?
ソフトウェアの複雑さを測定する従来のLOC(コード行)メトリックなど、マネージャーを含む多くの人々は、多くのハードボイルドオブジェクト指向開発者は、LOCが重要なクラス数に値しないと言うでしょう。個人的には、クラスはより合理的な複雑さの指標であると考えていますが、LOCメトリックがなければ、それらのクラスの実際の複雑さ(ポルターガイストとそこにいる神の量)は推定が困難です。
このように、かなり適切にコーディングされたソフトウェアにとって健全な比率になる可能性があることを誰もが知っていますか?
編集:この特定のケースでは、コードをクリーンアップするために必要なリファクタリングの量の概算を決定する比率を探しています。
編集:Firefox、Apache、Webkitなどの大きなOSSプロジェクトの比率を知っている人はいますか?
解決
LOCまたはNLOCは、コードの品質や正常性の適切な尺度ではありません。 NDepend の静的コード分析(.netを覗いてみてください)を使用して、ソリューションのアーキテクチャを確認することをお勧めします。
LOCはメソッドレベルでのみ適切な測定値であることがわかりました。つまり、私は一般的に私のメソッドが画面に収まるようにしています(小さなフォントはありません)。単体テストに加えて、Cyclomatic ComplexityやCode Coverage(TDDer向け)などの他のメトリックは、コードベースの健全性をよりよく感じることができます。
他のヒント
この質問に対する良い、決定的な、または満足のいく答えは実際にはありません。しかし、私の経験では、オブジェクト指向プログラミングの経験が増えると、クラスごとのコード行が減ると言います。
オブジェクト指向の設計原理を研究していない人のほとんどは、多くのコード行を含むクラスを持つ傾向があります。オブジェクト指向の経験が豊富な人は、クラスごとのコード行が少なくなる傾向がありますが、より多くのクラスがあります。そしてもちろん、両方がお互いについて文句を言うでしょう:-)。
実際に経験則を探しているだけなら、読みやすい解像度で1枚の紙に印刷できないクラスは長すぎる可能性があり、リファクタリングする必要があります。その場合、ターゲットマークは100〜200行程度になる可能性がありますが、ページファクターの方が対処しやすいと思います。
また、ページ数の測定基準は、線形ではなく要因の尺度として考えるべきだと固く信じています。コードベースに10ページのクラスがある場合、それは、適切に設計された小さなクラスよりも少なくとも 300万回倍悪いと感じます。