LOC /日の比率が高すぎる場合、私は気にする必要がありますか?[閉まっている]


9

私は現在インディープロジェクトに取り組んでいるので、人間によるテストや外部コードのレビュー全体を行う余裕はありません。しかし、現在のコードに難しいバグはありません(私が見ているように修正しています) 、そしてほとんどの場合、フィールド名などが間違っているため、1〜2分で修正することができます)。機能を実装した後、プッシュする前にテストします。最近、私のLOC番号は1日あたり約400でした(実際には、C#です)。新しいシステムを実装するだけでなく、既に記述した内容を書き換えて、いくつかのバグを修正しています。

気にする必要がありますか?これまでに作成したすべてのコードを停止して確認し、リファクタリングする必要があるという兆候ですか?


LOCをどのように測定していますか?Visual Studioで生成されたコードを除外しますか?
jk。

このbashコマンドを私のコードフォルダーで:(find ./ -name '* .cs' -print0 | xargs -0 cat)| wc -l
Max Yankov

たとえば、designer.csなどの生成されたコードが含まれる可能性があります-記述している行数については心配しません
jk。

一般的にはそうですが、この特定の環境(Unityゲームエンジン)ではそうではありません。
Max Yankov

1
コードを追加する前に、できる限り多くのコード行を削除しようとしいます。最小限のシステムでの作業は、代替システムよりもはるかに快適です。
Jon Purdy

回答:


18

LOCはおそらく最も悪用されるメトリックの1つであり、その結果、おそらくコードの品質のより無意味な測定の1つであり、プログラミングの労力のさらに無用の測定です。

はい、それは私がする大胆な声明です、そしていいえ、私はあなたに私の主張を証明する研究をあなたに指摘することはできません。しかし、私が苦労して得た経験から、あなたが書いたコードの量について心配し始めると、おそらく間違った問題について心配していると述べることができます。

最初に、何を測定または証明しようとしているのか、この証明が単に関心の対象ではないのか、または幅広い品質向上をサポートするのか、そしてチームから賛同を得るためにこの情報を使用する必要があるのか​​を自問する必要があります。 /それについて何かをするための管理。

LOCを使用する傾向があるものの1つは、少しの妥当性チェックです。大量のコードを記述していることに気付いた場合は、全体のLOCではなく、メソッドごとのLOC、またはクラスごとのLOCに興味を持ちます。これらの測定値、コードがどの程度適切に因数分解されているかについて少しOCDを感じている場合に、さらにリファクタリングする必要があることを示す指標になる場合があります。非常に大きなクラス、いくつかの小さなクラスにリファクタリングする必要がある場合あり、長い複数行のメソッド、いくつかのメソッドや他のクラスに分割する必要がある場合や、削除できる可能性がある繰り返しを示す場合もあります。「マイト」という言葉を数回使用したことに注意してください。

実際には、LOCは可能な指標のみを提供し、コードの変更が必要になる可能性があるという実際の保証はありません。実際に尋ねる質問は、コードが必要に応じて期待どおりに動作するかどうかです。もしそうなら、次の質問は、コードを簡単に保守できるかどうか、そして現在または将来、作業コードに変更を加えて将来の保守のオーバーヘッドを減らす時間があるかどうかです。

多くの場合、多くのコードは後でメンテナンスする必要があることを意味しますが、適切に因数分解されたコードでさえも数百行のコードにまで及ぶ可能性があり、はい、1日で数百行のコードを記述していることがあります。しかし、経験から、毎日数百行の新しいコードの出力を維持している場合、多くのコードが他の場所から不適切にカットアンドペーストされているというリスクがあり、それ自体が複製とメンテナンスですが、これも保証ではありません。そのため、私は自分の経験と直感が、手元のタスクがどのように完了したかに基づいて教えてくれることに依存する傾向があります。

私の質問で提示されたジレンマを回避する最善の方法は、LOCを忘れて、常にリファクタリングすることです。最初にコードテストを記述し、実装して失敗し、リファクタリングして合格し、次にそこにリファクタリングできるものを確認してから、コードを改善します。あなたはすでにあなたの仕事を再確認したことを知っていて、将来自分自身の二次推測についてそれほど心配することはないということを知っているタスクを去ります。現実的に言えば、私が説明したようにテストファーストのアプローチを使用する場合、完成したコードのLOC /日測定は、実際に測定量の3〜5倍を書き込んだことを意味し、その努力は継続的なリファクタリングによって正常に隠されます尽力。


1
1日あたり+1 400行は問題の兆候である可能性があります。残念ながら、私が知る唯一の方法はコードレビューであり、1人のチーム
jk)では

非常に詳細な回答をありがとう:)私はそれが主題を完全にカバーしていると思います。
Max Yankov

@jk。私は私の答えの文脈の中であなたのコメントに対処すると思います。単独の場合、コードの品質を保護する最良の方法は、コードの記述方法とテスト方法に集中することです。継続的なリファクタリングの考え方と組み合わせた優れたテストスイートは、多くの点でコードレビューと同じくらい優れています。レビューをせずに行うとは言っていませんが、レビューは製品が要件を満たし、テストの対象範囲が広く、将来の変更を自信を持って行えるようにするための二次的なものである必要があります。コードレビュー中の最初の質問は、常に「これのテストはどこにあるのですか?」です。:-)
S.Robins

+1 LOCが悪い指標であることを示す調査を指摘することはできませんが、LOCを指標として使用しているため、問題が発生した調査を見つけるのは簡単です。
daramarak

LOCは役に立たない指標であることに完全に同意します。何日か私は何百行ものコードを書いて、それで結構です。ある日、私はゼロを差し引く。いくつかの日は、コードを削除するだけです。:-)
Brian Knoblauch

5

まったくそうではありません。ある日、見つけにくいバグを修正して、1行だけ変更します。他の日は、新しいコードを追加して数千行を書き込みます。

毎日のLOCは、その日のタスクが400行のコードで実行できることを除いて何も通知しません。


2

これらの回答のいくつかは要点を欠いています。生産性の尺度としてLOCを使用していません(生産性が高すぎることを心配していなかった場合)、実際に行っているのはコードの品質を心配しているためです。コードは敵です。これは心配するのに良いことです。

残念ながら、コードの品質を知る唯一の方法はコードレビューです。あなたが1人のチームなので、コードのレビューを中止したとしても(そして、本当に中止したくないのですか?)自分のコードでは、ピアがあなたのコードをレビューするほどには明らかになりません。誰かがあなたのコードの少なくとも一部をレビューして、1日あたり400 LOCが意味不明なものになっていないかどうかを確認できるようにすることをお勧めします。1日のコードの独立したレビューでさえ、ここで役立ちます


1

1日に作成するLOCの数に煩わされるべきではありません。

しかし、あなたは気になるはずです:

  • コードがテストされていない場合(たとえば、単体テストがない場合)
  • 新しい機能の追加または実装された機能の変更で問題が発生した場合(つまり、リファクタリングが適切でなかった場合)
  • 経験が大きくなく、コードがレビューされていない場合(余分な目で問題が発見される可能性があります)

0

LOCは生産性の「公式」測定ですが、その値に対する議論は長くなる可能性があります(ただし、ORMは3分で50,000行のコードを生成する可能性があります。

%完了タスクvs時間vs完了予定タスク%を追跡することで、進捗状況を測定することをお勧めします。これが重要です。顧客は、LOCにではなくビジネス価値を提供する実用的なコードに対して支払います。

LOCに関する参考資料


しかし、彼は生産性の指標としてLOCを使用していません
jk。

はい、しかし私が言ったようにそれは正確な測定ではありません。「1、2、100の平均値」を使用した場合も同様ですが、平均が得られますが、偏っていて正確ではありません。LOCを使用すると、各開発環境と一連のツールが異なる生産性の数値を反映する可能性があるため、事態はさらに悪化します。たとえば、LOCはコードの長さだけを比較してコードの複雑さを比較することはできません。元の投稿を、あなたが見たいと思われる2つの参照で修正しました。
NoChance

0

コード重複の数も測定していますか?

高出力がコードに多くのコピーと貼り付けがあるためである場合、心配する必要があります。

理由:copy&paste-sourceにエラーがあった場合、copy&pasteのすべての使用法を修正するのは難しく、エラーが発生しやすくなります。


-1

あなたが美しい関数型コードを信じているなら、それがあなたの唯一の手段であるべきです

「流れますか?きれいに見えますか?」


3
唯一の対策?それはどうですか?十分速いですか?
jk。

それが私が機能的だと言った理由です:)
Darknight
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.