80%を超える変更を行う場合、クラスファイルの著者名を変更する必要がありますか?


18

自動化されたUIテストのために、既存のJavaテストクラスのセットをリファクタリングしています。クラスファイルを大幅に変更するか、完全に変更することがあります。これにより、クラス全体を書き換えるとき、コメントセクションの著者名を自分のものに変更する必要があると思いますか?

私は貪欲ですか?それとも、私の名前を見て疑問がある場合に私に尋ねることは有用でしょうか?


17
バージョン管理を使用していますか?コミットログは、著者の信頼性の高い追跡メカニズムであると判断します(正当な理由を見つける必要がある場合...)
rwong

5
コードに何らかの種類の値がある場合、名前はそこになければなりません。すなわち連絡先。責任など。そのような場合は、終了日と新しい名前を付けて貼り付けてください。
独立した

15
クラスファイルにautorの名前を付ける目的は何ですか?
BЈовић

2
ファイルに作成者名のプレースホルダーがある場合、変更ログのプレースホルダーもある可能性があります。元の著者ではなく、変更ログに自分の名前を入れます。とにかく、私は自分が書いたコードに自分の指紋を残さず、上司のものだけを残します。
mouviciel

1
著者として自分の名前を残すと「書き換え/リファクタリングの名前の日」と言い、以下の行を追加すると何が間違っている
Ryathal

回答:


15

それは本当に依存しています...

他の誰かが後で元の作者に尋ねることに興味があるかもしれないというわずかな可能性があると思うなら、コードに彼の名前を入れてください。誰かがあなたに直接尋ねることに興味があるかもしれないと思うなら、あなたの名前を入れてください。そして、あなたが考えるなら、両方が可能かもしれません、両方の名前を入れてください(または「…の仕事に基づいて」のようなコメント)。

もちろん、職場でソース管理の使用が必須であり、それがソースへのアクセスを取得する唯一の方法である場合は、面倒を省き、すべての著者のコメントをソースから削除します。たとえば、私の職場では、ソース管理に多くのソースファイルがあり、ソースに名前を書き込む必要はありません。ファイルの責任者、過去、または特定の変更の責任者を知りたい場合、TortoiseSVNはそのログを簡単に生成します。

一方で、一部の人が書いたVBAマクロがたくさんあり、他の人に渡され(一部は長年にわたって会社を去りました)、多くのソース管理を使用せずに修正されました。幸いなことに、これらのファイルのコメントには、多くの場合、著者名と何らかの種類の履歴ログが含まれています。


13

私はちょうどOPが著者の名前をファイルヘッダーに含める必要があるかどうかを尋ねている別の投稿に出会いましたファイルの変更者を追跡するだけです。その投稿に何が起こったのか分かりませんが、今では見つけることができません。<-(したがって匿名の「OP」)

個人的には、ファイルヘッダーにリストされている作成者が有用であることがわかりますが、その理由は少し異なります(これは環境内の他のユーザーとは関係ない場合があります)。コミュニティの所有権を実践しようと試み、プロジェクトのさまざまな部分で作業することもありますが、コードの特定の領域を他の領域よりも詳しく知っているチームメンバーはほとんどいません。したがって、誰か(特に出入りする多数の請負業者)が今まで見たことのないファイルを開くと、著者が頼りになる人になります。彼は唯一の貢献者ではなく、多数派の貢献者でさえないかもしれませんが、彼の名前を先頭にして、コードに関する知識/情報をチームの他のメンバーに配布することに一定の責任があることを認めています。ヘッダーには複数の人が実際に貢献しており、責任を感じていることを示すことができます。

ファイルに関する質問があり、バージョン管理に頼って主要な、または最も知識のある人を特定しなければならないとき、私はイライラします。そして、コードが何をしているのかを本当に否定しているので、ある人から次の人に行くことになります。

ハンドオフがないため、このプラクティスはチームで機能します。人が辞めるか、別のチームに移動しない限り、そのコード/プロジェクトはその人と私たちのチームにとどまります。明らかに、コードを保守している人がコードを書いている人と同じでない場合、誰もヘッダーにリストされていることを気にしません。

したがって、ファイルヘッダーに関する私の見解に照らして、ファイルの80%を変更した場合、あなたは今、あなたが質問の頼りになる人であると感じます(そして、おそらくあなたはそのように感じるはずです)、はい、行きます先にファイルヘッダーを更新して名前を付けます。前の人を削除するのが気に入らない場合は、少なくとも当面はその人の名前をそこに残すことができます。あなたはいつでも元の作者に尋ねることができ、あなたは名前を変更したことを少し気にしないと確信しています。ファイル自体の80%を変更するのは難しいと思っているからです。

更新:その投稿を見つけまし。8月からどうやって何かを取り戻したかわからない。The Pragmatic Programmerを読み終えたばかりで、最後の章で著者は署名作業と説明責任について話します(他の投稿がそれについて言及したので、調べました)。この本は完全に理にかなっており、今考えてみると、著者としてリストされている人は誰でも、問題のファイルのすべてのコードレビューに含めるべきであるというチームポリシーを導入する必要があります。SVNでファイルを最後に変更したか、ほとんど変更したかは関係ありません。作成者は所有者であり、キーパーです。


1
私はあなたのポイントを見ますが、「OP」とは誰ですか?
タルン

プロジェクトページ、または連絡先情報を公開して誰でも見ることができる内部wikiがあります。これらの情報(ドキュメントおよび担当者)をソース管理に入れることの難しさは、分岐およびマージ中に発生します。
rwong

@Tarun:OP = "元のポスター"(質問をする人)。これは、オンラインディスカッションフォーラムで使用される表現です。
sleske

@Tarunに同意します。投稿へのリンクは、あなたの答えを視野に入れるのに役立ちます。私はそれがだ推測している。この1
ヤンニス

1
@rwong:分岐とマージの間に問題があるのはなぜですか?通常、変更をマージする人はそれを理解する必要があります(そうでなければ、なぜマージするのですか?)。したがって、ログ内の人が尋ねる人です。
sleske

5

著者の名前がひどく便利だとは思いません。この質問が示すように、多くの場合、単一の著者は存在しないため、「著者」と命名することはできません。

もちろん、主要な貢献をしたすべての人々のリストを含めることもできますが、それはすでにリビジョン管理ログから取得できます-それで、ポイントは何ですか?

私のプロジェクトでは、ほとんどのファイルに著者情報がありません。質問がある場合は、ログを調べるだけです。通常、1〜2人がほとんどの作業を行ったことは明らかなので、尋ねます。

編集

答えは、バージョン管理を使用するプロジェクトを想定しています。VCを(一貫して)使用しない場合は、作成者(リスト)を入れて、おそらく変更履歴をファイルに入れることは実行可能な回避策かもしれません。それでも、おそらくできるだけ早くVCの使用を開始する必要があります。その場合は上記を参照してください:-)。


so what's the point?VCの下にないプロジェクト、ある時点で別のVCに移行したプロジェクト(残念ながらすべての移行スキームが履歴移行を許可するわけではありません)、および複数のVCを同時に使用するプロジェクト-一部のFLOSSプロジェクトはそれを採用しています1 VCS(SVN人がgitのハード、gitの人々が使用できなくSVN見つけ、そして私たちは、人々が、両方を笑うHG見つける。)にそれらを制限することなく、それが簡単に人々が貢献できるようにするためにするアプローチは
ヤニス

1
@YannisRizos:OK、それは本当です。私は暗黙のうちに、どのソフトウェアプロジェクトもバージョン管理を使用すると想定していました。私の答えを編集しました。
sleske

そしてもちろん、他のポイントは、関係するvcsに関係なく、マイナーなvcs-fuで簡単に解決できるはずです。しかし、実際には、残念ながらそうなることはめったにありません。
ヤンニス

2

ファイルが大幅に変更されている場合は、そのファイルについて何かを知っている人として自分の名前をファイルに追加してもかまいません。


1

ソースファイルの作成者は、ソースファイルで常に言及する必要があります。これは、適切なヘッダーコメント付きで、著者がソースを開発した理由と、コードを書くことに対する彼/彼女の考えを示しているはずです。コードのメンテナーに関しては、ソース管理の追跡にはメンテナーの名前を追加することが重要です。

著者、IMHOの命名には、バージョン管理システムの外部のコードのソースバージョン、変更が発生した最初の日付、および変更要求番号を含める必要があります。その理由は、VCSを変更する決定が発生した場合、コードのバージョン、作成者、開発者が参照できる変更要求番号の履歴があります(メンテナーが彼/彼女がやった)。したがって、私たちの組織では、フォーマットは次のとおりです。

/**
 * $comment
 * <p />
 * $cr_number, $date, $author, $description 
 **/

3
「VCSを変更する決定が生じた場合、コードのバージョンの履歴があります」健全な組織が履歴(少なくとも最近の履歴)を移行せずにVCSの移行を検討することを望んでいません。結局のところ、それがVCSを使用するポイントです。
sleske

1
完全に反対。そのような情報はバージョン管理で追跡する必要があります。それ以外の場合、誰がどの行を変更したかを知る方法は実際にありません(複数の人がファイルに取り組んだと仮定します)。それをファイルに入れることは、他の場所で入手できる情報の忠実度の低い複製です。
ブライアンオークリー

1
@Bryan Oakley、私はバージョン管理をまったく削除していません。コードで自分を認識することは、バージョン管理を介して必要なルックアップを行う必要なく、誰がソースで作業したかを知る方法です。また、バージョン管理システムの外部で利用可能なコードがいくつかありますが、著者名を除外する必要がありますか?
ブハケシンディ

1

コードについての答えを探している人を見つけるためだけに、元の作者の名前を見るのが好きです。(作者は一般に思い出しませんが、少なくとも一撃です!)

元の著者の下に自分の名前を追加することをお勧めします。

他の人の名前を置き換える必要はありません。彼らはあなたが知らない元のビジネスの必要性のある側面を知っているかもしれません。


3番目の段落の+1。元の作者は、コードで何かをしたが、名前を付けていない他の人を知っている可能性があるため。
コヨーテ21

1

@authorコメントに関する私のポリシーは次のとおりです。

  1. それが真新しいファイルである場合、私は自分を@authorとして置きます。
  2. 既存のファイルの場合、ファイルに対して何をするかに関係なく、@ authorをそのままにします。

何か質問がある場合、ファイルの@authorが誰であるかは関係ありません。編集中のファイルのどの部分の@authorが誰であるかが重要です。それ[git/svn/whatever] blameが目的です。

IMO、@ authorは立ち去る必要があります。


一方では、新しいファイルに自分を著者としてリストします。一方で、著者を立ち去らせたいですか?
アンソニーペグラム

1
会社のコーディング標準では、@ authorタグの存在が必要です。そうでなければ、私はそれをまったく使いません(私はそれを消したいので:))
マイケルム​​ッサ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.