コードの物理的な行の話はかなり無意味であることを理解する方がはるかに良いでしょう。物理的なコード行数(LoC)はコーディングスタイルに非常に依存しているため、開発者によって桁違いに変化する可能性があります。
.NETの世界では、LoCをカウントする便利な方法があります。シーケンスポイント。シーケンスポイントはデバッグの単位であり、ブレークポイントを配置するときに暗赤色で強調表示されるコード部分です。シーケンスポイントを使用すると、論理的なLoCについて話すことができ、このメトリックはさまざまな.NET言語間で比較できます。論理LoCコードメトリックは、VisualStudioコードメトリック、NDepend、NCoverなどのほとんどの.NETツールでサポートされています。
たとえば、次は8 LoCメソッドです(括弧の最初と最後のシーケンスポイントは考慮されません)。
LoCの生産は長期的に数える必要があります。LoCが200を超える日もあれば、LoCを1つも追加しないで8時間かけてバグを修正する日もあります。死んだコードを削除してLoCを削除する日もあれば、既存のコードをリファクタリングして、合計に新しいLoCを追加しない時間を費やす日もあります。
個人的に、私は自分の生産性スコアで単一のLoCをカウントします。
- ユニットテストでカバーされています
- ある種のコードコントラクトに関連付けられています(可能な場合は、すべてのLoCをコントラクトで確認できるわけではありません)。
この状態で、.NET開発者向けのNDependツールをコーディングした過去5年間の私の個人スコアは、平均してコード品質を犠牲にすることなく、1日あたり平均80の物理LoCです。リズムは維持されており、すぐに減少することはありません。全体として、NDependは、現在約115Kの物理LoCに重み付けされているC#コードベースです。
LoCを数えるのが嫌いな方(ここでコメントでそれらの多くを見ました)は、適切に調整されたら、LoCを数えることが優れた推定ツールであることを証明します。開発の特定のコンテキストで達成された数十の機能をコーディングして測定した後、LoCでTODO機能のサイズを正確に見積もることができるようになり、それを本番環境に配信するのにかかる時間に到達しました。