2008-09-09 14 views
6

G'day、コードのレビュー時に悪い匂いがアプローチに影響しますか?

私はKristopher Johnsonからのコメントについて、ソフトウェア開発品質に関するこの回答questionについて考えていました。

は私が含ま私の頭の上から考えることができ、ソフトウェアの品質メトリクスのリストを掲載したい:

  1. マッケイブCyclometric複雑 - コードによる線形パスの数の基本的指標。
  2. インデントのレベル - ネストされた決定ステートメントを見るときの複雑さの尺度。
  3. 宣言から最初の使用までの距離 - 変数が宣言されている場所と最初に使用された場所の間にあるステートメントの数。
  4. コメントパーセンテージ - コメントはソースコードと比較して何行目かです。
  5. パーセントテストカバレッジ - コード行のパーセンテージとして、テストスイートでどのくらいのテストが実行されますか。
  6. パステストカバレッジ - テストで実行された実行パスの数。
  7. ユニットカバレッジ - ユニットテストで個々のユニット、クラス、パッケージなどの数が実行されます。

クリスさんのコメントでした:

のみここに記載されているテスト・カバレッジ指標はの尺度と考えられる「品質。」他のものは複雑さと可読性の測定値であり、実際には品質とは関係ありません。

私はこの声明に全く同意しないという事実を別にすれば、私は思考を得ました。

ユニット、システム、統合のいずれのテストにも関連するテストがほとんどないコードを見直す必要があるとき、私は正常に渡されたテストの良いスイートを見るよりもはるかにコードに近づく傾向があります。

コードでセキュリティ監査を行う場合と同じことです。私が使用していない変数、巨大な関数、configsの奇妙な混合、サーバごと、dirなどがApacheモジュールで使われているのを見ると、コードに非常に慎重に近づく傾向があります。

他の誰かがこの初期の「腸管感覚」アプローチを使用していますか?それが結果に影響しますか?

私は他のすべてのメトリックが間違って設計された、実行が不適切なコードを強調するための有効な手段であるため、Krisのコメントに同意しません。 Damian Conwayが言っているように:

あなたのコードを維持する人は、あなたがどこに住んでいるかを知っている暴力的な精神病者であるかのように、常にコードします。

答えて

6

開発された「腸の感覚」は、初心者と専門家を区別するものです。いくつかの経験を積んだ後、「腸の感覚」が最終決定の主な貢献者の1つになります。誰かのコードを見直しているのか、システムアーキテクチャを作成しているのかは関係ありません。しかし、実用的な開発者は自信を持っていてはいけません。常にチェックリストやその他の手段のための場所があります。

メトリクスについては、私は全く同意します。メトリックがコードの品質に寄与しない場合、メトリックは無意味です。

+0

しかし、確かに "腸の感覚"は苦い経験の長い期間の後にのみ確立され、したがって "初心者"の領域にすることができませんでしたか? –

+0

それはそうです。 – aku

+0

申し訳ありませんaku!私はあなたの前に前立腺を置き、あなたのコメントを間違って読んだことをお詫びします。私たちは実際に同意しているのです! ( - : –

1

あなたとクリスは、品質の定義にちょうど同意しないと思います。数学での証明の類推を取る。

品質は、証明がであるかどうかを、正確にはであると主張することができます。つまり、正しく仮定から結果に変わります。しかし、ほとんどの数学者は、短くても賢明にやっているか、理解しやすいという理由で、いくつかの証明が他の証明より優れていることに同意するでしょう。正式な定義だけが正式に定義できますが、私が思う大部分の数学者は、「より良い証明」と答えると2番目の定義を意味します。

最初の定義の下でKrisが言っていることは、テストだけがの正しさを測定するだけですが、私も含めてほとんどのプログラマーはあなたの測定にも品質を関連付けると思います。

+0

確かに正しさは証明可能です。しかし、コードが酷く設計されていて実装が不適切なコードにソリューションが実装されている場合は、そのコードを維持する時間が来たら足を踏み入れるのではないでしょうか? このように、コードの価値は、それが実装された会社にとっては価値がありません。 –

1

はい、あなたは少し経験があるとすぐに非常に良いツールです。私はハントとトーマスがPragmatic Programmerでこれを言及していることを覚えているようです。彼らは、「あなたはたくさんの経験を持っているので、その気持ちを無視してはいけません」(正しい見積もりがある場合、または別の書籍の場合は修正してください)のようなものです。

カール

関連する問題