有用なメトリクスであれば問題ありません
15 に答える
私がコードに求めるものの 1 つは、単体テストです。これにより、リファクタリングの自由が得られます。したがって、コードにテストがない場合は、レガシー コードと見なします。
コードの場合:
- 同じ機能またはより優れた機能を実装する新しいコードに置き換えられました
- 現在のシステムでは使用されていません
- すぐに別のものに置き換えられます
- 歴史的な理由からアーカイブされています
- ベンダーがサポートを停止したとき
「レガシー」という用語は、現在も使用されており、アクティブな開発を中止したテクノロジーを使用して開発されたコードを指すために使用されます。
現在の状態で変更するよりも、最新のツールを使用して書き直したいコードです。
優れた「レガシー コードを効果的に使用する」の著者であるマイケル フェザーズは、これをテストを持たない任意のコードと定義しています。
おそらく、より良い質問は、コードの一部を非レガシーとしてマークするものです。
私にとってレガシーとは不変を意味します。したがって、それを変更できなくなるとすぐに、それはレガシーになります。
その能力が固定された要件、破損、知識の喪失、またはその他の影響の恐れによって削除されるかどうかは、ほとんど関係ありません.
関連する注意点として、レガシーという言葉はあまりにも多くの感情をかき立てて役に立たないため、正確な言葉を使用することはないと思います.
決定的な答えがあるとは思いませんが、コードに触れたくない人の数が増えるにつれて、コードがレガシー コードである可能性が高くなり、コードを変更すると壊れる可能性が高くなると思います。
私の意見では、書かれているすべてのコードはレガシーコードです。元の意図があり、コードに関して行われたすべての決定が忘れられるまでには時間がかかる場合がありますが、遅かれ早かれ、コードを書いているときに彼らが何を考えていたかを想像することはできません。レガシーコードを自分で書くことはありませんよね?
開発者が建物を離れてからの単体テストまたは秒のような測定を使用しても、コードがレガシーコードであるかどうかは実際には測定されません。レガシーコードには、優れた単体テストとコメントのセットが含まれている可能性があり、厳密なコードレビューやその他の分析が行われている可能性があります。これは、コードがまだ手元のプログラムに関連しているという意味ではありません。これは、コードが比較的よく書かれている可能性があることを示唆しているだけです。そして、それがもはや関連性がない場合、コードは実際にプログラムが開発された問題を解決することを難しくします。
「レガシーコード」という用語は主観的であり、おそらく負荷の高い用語です。しかし、一般的に、レガシー コードは単体テストが不可能であり、リファクタリングが困難であるという見解に同意します。
- コードが十分に古い場合、最初にコードを書いた開発者に会うことはありません。
- サードパーティのライブラリがサポートされなくなったとき。
レガシ コードは、多くの場所で「テストのないコード」として定義されています。それらがテストの種類に固有のものであるとは思いませんが、一般的に、何か未知のことが起こることを恐れずにコードを変更できない場合、それはすぐに発展します。
「レガシー コードの効果的な作業」を参照してください。
通常、コードの保守に精通している、または快適に感じている人がまだいない場合、人々は何かをレガシーコードと呼びます。
単体テストを使用すると、コードに慣れていない人でも簡単にコードを掘り下げることができるため、理論的には、コードが「レガシー」になるのを防ぐのに役立ちます。
私は間違っているかもしれませんが、これには確立された測定基準があるとは思いません。
通常、少なくとも 5 ~ 6 回のリリース サイクル (おそらくそれ以上) を経たコードは、レガシーであると見なされます。多くの場合、元の実装者は存在しなくなり、コードはそのまま維持されます。
多くの場合、コードがレガシーである場合、別の方法で変更されます。人々はそれを変更することを恐れていますが、誰も完全な結果を理解していないため、変更は迅速で汚い傾向があります. 人々はより深い変更に伴うリスクを負いたくないため、コードの重複の問題が発生する可能性があります。
したがって、そのような状況では、状況はますます悪化する可能性があります。
開発者が敷地を離れてからほぼ数秒。:)
もしも...
新しい機能を追加するための資金が銀行にありません
修正が必要なプロジェクトに取り組んでいると認める人が見つからない
あなたが所有するプロジェクトのソース コードが MIA になった
...その後、レガシー コードに取り組んでいます。
何かが「レガシーコード」であるかどうかを判断するために使用できる実際のメトリックは知りませんが、書かれたばかりよりも古いものはレガシーと見なされる可能性があります. レガシー コードは、人や組織によって意味が異なるため、多少主観的です。