1

「 DON'TDOIT」、「BAD PRACTICE!」で私に忠告し始める前に、および「適切なソースコード管理の使用方法を学ぶ」、最初に私に聞いてください。古いコードをコメントアウトして永久にそこに残すという慣習は非常に悪いことを十分に認識しており、私はそのような慣習を自分で嫌っています。

しかし、これが私が置かれている状況です。数か月前、私はソフトウェア開発者として会社に加わりました。私は最近入社する約1年前に、インターンとして数ヶ月間会社で働いていました。当社はソースコードバージョン管理(CVS)を使用していますが、適切ではありません。

これが私のインターンシップと現在の常勤の両方で起こったことです。私がプロジェクトに取り組むように割り当てられるたびに(レガシー、約8〜10歳)。CVSアカウントを作成してコードをチェックアウトし、変更をチェックインさせる代わりに、先輩の同僚がCVSからコードをエクスポートし、圧縮して私に渡しました。

この同僚は数週間ごとにすべての変更を一括でチェックインしますが、通常の方法では、実際のソースコード自体できめ細かいバージョン管理を行います(各ファイルは他のファイルから独立したバージョンで増分します)。ファイルに変更が加えられるたびに、古いコードがコメントアウトされ、その下に新しいコードが入力され、このセクション全体にバージョン番号が付けられます。変更に関するメモは、ファイルの上部の「変更履歴」というセクションに配置されます。最後に、変更されたファイルは共有フォルダーに配置され、一括チェックインの準備が整います。

/*
 * Copyright notice blah blah
 * Some details about file (project name, file name etc)
 * Modification History:
 * Date         Version     Modified By     Description
 * 2012-10-15   1.0         Joey            Initial creation
 * 2012-10-22   1.1         Chandler        Replaced old code with new code
 */

code ....
//v1.1 start
//old code
new code
//v1.1 end
code ....

今問題はこれです。私が取り組んでいるプロジェクトでは、別のプロジェクトからいくつかの新しいソースコードファイルをコピーする必要がありました(以前は宛先プロジェクトに存在していなかったという意味で新しい)。これらのファイルには、通常は長いまたは非常に長い変更履歴セクションを含む、多くの履歴コメントアウトコードとコメントベースのバージョン管理が含まれています。

ファイルはこのプロジェクトにとって新しいものなので、ファイルをクリーンアップして履歴コードを含む不要なコードを削除し、バージョン1.0からやり直すことにしました。(コメントベースのバージョン管理は嫌いですが、それでも継続する必要があります。バージョン0.1から始めない理由は聞かないでください...)インターンシップ中に同様のことをしましたが、誰も何も言いませんでした。私の上司はその仕事を数回見たことがあり、そのようなクリーンアップを行うべきではないとは言いませんでした(気づいたとしても)。

しかし、同じレベルの同僚がこれを見て、将来ダウンタイムを引き起こし、保守コストを増加させる可能性があるため、推奨されないと述べました。例として、元のファイルに対して別のプロジェクトで変更が加えられ、これらの変更をこのプロジェクトに伝播する必要がある場合があります。コードファイルが大幅に異なると、伝播を行う別の開発者に混乱を引き起こす可能性があります。それは私には理にかなっており、有効なポイントです。ばかばかしいほど厄介なコードの不便さ以外に、クリーンアップを行う理由を見つけることができませんでした。

つまり、簡単に言えば、私たちの会社での慣習を考えると、プロジェクトからプロジェクトに新しいファイルをコピーするときに、そのようなクリーンアップを行うべきではありませんか?コメントに完全な履歴がある元のコード(のコピー)に変更を加える方が良いですか?または、クリーンアップを行うためにどのような正当化を与えることができますか?

PSからMODへ:何らかの理由でSOに適さないと判断した場合でも、この質問をしばらく許可してください。タグなど不適切な点がございましたら、あらかじめお詫び申し上げます。

4

3 に答える 3

1

別のプロジェクトからのファイルのコピーが本当に(このソースの場合)「分岐点」とソースとフォークの並行した独立した進化を意味する場合、レガシー履歴とコメント付きコードは事実上「ホワイトノイズ」であり、あなたの側で簡単に排除できます。「分岐点」についての親の言及からの将来の可能な伝播については、変更履歴の最初の行、smthでのみ十分です。お気に入り

...
 * Date         Version     Modified By     Description
 * 2012-10-25   1.0         ADTC            Created from 12.34 of <filename>
...

質問者による補遺(ADTC): 上記の回答に加えてコメントを引用したいと思います。

[...]ソースコードを取得し、誰が何をしたかに関連するコメント(履歴コメント)を削除しますが、ソースコード/クラス/メソッドが何をするかに関するコメント(情報コメント)を保持します。それがコメント欄のはずです。メソッドが何をしているのか、どのように実装されているのか、どのような条件下で例外がスローされるのかを明確に定義する必要があります。–勝利2012-10-25 00:57:57Z

于 2012-10-24T18:38:54.170 に答える
1

私があなたの立場に立つのであれば、他のソースコードを変更して、プロジェクト内で使用するライブラリとして作成したいと思います。

于 2012-10-24T18:43:29.853 に答える
0

自分でバージョン管理を使用することをお勧めします-gitをお勧めします。先輩の同僚が現在持っているものと同期する「アップストリーム」コード用のブランチを1つ用意します。次に、作業用に1つ以上のブランチを作成できます。「アップストリーム」ブランチに対して使用した変更の概要がわかりgit diff、そのプロジェクトでこれまでに行ったすべての履歴を検索できます。これはすべて自動で、手動のコードバージョン管理がなくても、ファイルは常に「クリーン」です。 gitで利用可能なすべての履歴。

于 2012-10-24T17:19:39.923 に答える