1. ホーム
  2. code-metrics

[解決済み] コードメトリクスの魅力とは?[クローズド]

2023-06-03 17:09:56

質問

最近、SOで「コードメトリクス」関連の質問を多く見かけますが、その魅力は何なのか不思議に思っています。ここに最近の例をいくつか挙げます。

私の考えでは、どんな指標もコードレビューの代用にはなりませんが。

  • いくつかのメトリクスは、時々、レビューする必要がある場所を示すかもしれませんし
  • 短期間での測定基準の急激な変化は、見直しが必要な場所を示すことがあります。

しかし、それ自体が常に「良い」または「悪い」コードを示す単一の測定基準というのは考えられません。測定基準では見えない例外や理由が常に存在するのです。

私が見落としているような、コードメトリクスから得られる魔法のような洞察があるのでしょうか?怠惰なプログラマや管理者は、コードを読まない言い訳を探しているのでしょうか。人々は、巨大なレガシー コード ベースを提示され、開始する場所を探しているのでしょうか? どうなっているのでしょうか?

注: 私はこれらの質問のいくつかを特定のスレッドで回答とコメントの両方で尋ねましたが、返事はありませんでした。したがって、おそらく私が何かを見逃しているので、コミュニティ全般に尋ねるべきだと思いました。メトリクス・バッチ・ジョブを実行して、他の人のコード(または私自身のコード)を読む必要がなくなればいいのですが、それは現実的ではありませんね。

EDIT: 議論されているメトリクスはすべてではないにせよ、そのほとんどに精通しています。ただ、それらを単独で、あるいは品質の恣意的な基準として用いることの意味がわかりません。

どのように解決するのですか?

このスレッドの回答は、彼らが話すように、一種の奇妙なものです。

  • チーム」、「唯一無二の受益者」、「指標」。
  • メトリクスは、それ自体が何かを意味するようなものです。

1/メトリクスの対象は 1 の集団のためのものではありません。 3 :

  • 開発者:彼らは、以下のことに関心があります。 瞬時の 静的なコードメトリクス コードの静的解析 (サイクロマティック複雑度、コメント品質、行数、...) について
  • プロジェクトリーダー: 彼らは次のことに関心を持っています。 毎日 ライブコードメトリクス ユニットテスト、コードカバレッジ、継続的インテグレーションテストから来るものです。
  • ビジネススポンサー (常に忘れ去られていますが、彼らは利害関係者であり、開発に対してお金を払う人です): 彼らは次のことに関心があります。 週間 グローバル コード メトリクス アーキテクチャ設計、セキュリティ、依存性、...に関して

もちろん、これらの測定基準はすべて 3 つの集団によって監視および分析できますが、それぞれの種類は、それぞれの特定のグループによってよりよく使用されるように設計されています。

2/ メトリクスは、それ自体で、以下のことを表しています。 スナップショット を実行すると、それは...何も意味しません!

これらの測定基準の組み合わせや、異なるレベルの分析の組み合わせが、"good" や "bad" のコードを示すかもしれませんが、より重要なのは、それが これらの測定基準の傾向 というのは重要です。

というのは 繰り返し これらの測定基準は、ビジネスマネージャー、プロジェクトリーダー、開発者が以下のことを行うのを助けるので、本当の付加価値を与えるものです。 優先順位 様々なコード修正の中で


言い換えれば、あなたの質問である "メトリクスの魅力" は、次のような違いを指している可能性があります。

  • 美しいコード (ただし、これは常に見る人の目の中にあるものです)
  • 良いコード (動作し、動作することを証明できるもの)

そのため、たとえば、循環的複雑度が 9 の関数は、循環的複雑度が 42 の長く複雑な関数とは対照的に、" beautiful" として定義することができます。

しかし、もし

  • の場合、後者の関数には 安定した の複雑さを持つ。 と組み合わせて であり、コードカバレッジは 95% です。
  • であるのに対し、前者は 増加しています。 の複雑さを持ちます。 と組み合わせて カバレッジは 0%,

と主張することができる。

  • は、後者が " を表しています。 良い "コード(それが動作し、安定しており、それが変更する必要がある場合、1つは、それが修正後にまだ動作するかどうかを確認することができます)。
  • 前者は " 悪い のコードです (やるべきことをすべてカバーするには、いくつかのケースと条件を追加する必要があります。また、いくつかの回帰テストを行う簡単な方法もありません)。

では、まとめます。

それ自体が常に[...]を示す単一の指標。

: コードがより美しくなることを除けば、それ自体に大きな意味はありません...。

私が見落としているような、コードメトリクスから得られる魔法のような洞察があるのでしょうか?

唯一の の組み合わせ 傾向 は、あなたが求めている本当の「魔法のような洞察力」を与えてくれます。