- PR -

ソース修正の際に古いソースをコメントアウトするのはダメ?

投稿者投稿内容
cyanberry
常連さん
会議室デビュー日: 2005/01/07
投稿数: 37
投稿日時: 2009-04-01 17:24
現在の仕事は、PHPで開発しており、Subversionで構成管理しています。

私はこれまでソースを修正する場合には、古いソースをコメントアウトし、さらに修正日付、修正者名、修正内容をコメントで入れるようにしてきました。

(例)
-----------------------------------
//090401 update [氏名] #1234のバグ改修 start
/*
[古いソース]
*/
[修正後のソース]
//090401 update [氏名] #1234のバグ改修 end
-----------------------------------

しかし、今一緒に開発している同僚のSEは、「古いソースをコメントアウトしたり、コメントに日付を入れたりするのは、構成管理ツールが無かった頃の古いやり方だ。今はむしろやってはいけない風潮になっているから、すべきではない。」といい、そのやり方に反対しています。

確かに私も商用リリース前のソースの修正に関してはこんなことはしないのですが、商用リリース済みのものに関しては慎重にやりたいので、情報をたくさん残すようにしています。

この同僚のSEの言う通り、このやり方は古くやらない方が良いのでしょうか?
皆様の開発現場はどうされてますか?
deanna
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 118
投稿日時: 2009-04-01 17:37
それは、プロジェクト毎に決めればいいことではないでしょうか?
確かにSubversionやCVS等では差分管理をしており、過去のバージョンとの比較が簡単にできるのですけど。
比較しないと発見できないのですね。
コメントアウトするか、修正履歴だけでも保持するか、全く記述しないか。
ケースバイケースでは。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2009-04-01 18:25
引用:

cyanberryさんの書き込み (2009-04-01 17:24) より:
しかし、今一緒に開発している同僚のSEは、「古いソースをコメントアウトしたり、コメントに日付を入れたりするのは、構成管理ツールが無かった頃の古いやり方だ。今はむしろやってはいけない風潮になっているから、すべきではない。」といい、そのやり方に反対しています。


私も、基本的には「古いやり方だ」という考えを持っています。

引用:

cyanberryさんの書き込み (2009-04-01 17:24) より:
確かに私も商用リリース前のソースの修正に関してはこんなことはしないのですが、商用リリース済みのものに関しては慎重にやりたいので、情報をたくさん残すようにしています。


ただ、この考えも納得できます。「慎重」さを重視すると、やはりソースコードに残すことが、良い方法だと思います。


ちなみに、1年ほど前に別のカテゴリーの会議室で、類似の話題がありましたので紹介します。

Java Solution 会議室
件名:ソース修正時にコメントでどう挟むか?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=42316&forum=12

(この紹介は、情報の紹介のみを意図しています。検索しろ、などというような意図ではありません。)
sasagaki
常連さん
会議室デビュー日: 2008/03/10
投稿数: 20
投稿日時: 2009-04-01 19:10
確かに迷うところですね。

でも、
コメントを残すことで、見やすく(仕様変更したことががわかりやすく)なるのは最初のうちだけで、
長期的に見ると、修正に修正が覆いかぶさったりして、
どんどんぐちゃぐちゃになって訳がわからなくなっていくことが多いと思います。

ですので、私は、
ソース上のコメントは、常に最新の仕様を反映した状態を維持するようにし、
誰が、いつ、なぜその変更をしたかという履歴は、バージョン管理ツールの機能を使ったり、別にドキュメントを作ったりして管理しています。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2009-04-01 20:21
こんな修正されたら、たまったもんじゃない。
コード:
if (...) {
/* 
    間違っていたコード
} else {
*/
    ...
}


判定文が誤っていた場合に、ブロックを越えてブロック コメントや ifdef でコメント アウトされると、エディタが混乱して、修正効率が下がります(色分けや折りたたみ、対応するカッコにジャンプが使えなくなる)。

複数のバグを一回でコミットするのではなく、バグひとつにつきコミット一回(以上)にすると、管理も容易になります。
あと、修正前に自分用のデータベースにコピーする、ブランチするなど。

但し、何故(修正して)今のコードになったのかというコメントは、おおいに入れるべきだと考えています。
ごん太
大ベテラン
会議室デビュー日: 2002/07/30
投稿数: 182
お住まい・勤務地: 森の中
投稿日時: 2009-04-02 08:48
引用:

Jittaさんの書き込み (2009-04-01 20:21) より:
何故(修正して)今のコードになったのかというコメントは、おおいに入れるべきだと考えています。



私もなぜ修正したのかは最低限入れるべきだと思います。

引用:

sasagakiさんの書き込み (2009-04-01 19:10) より:
修正に修正が覆いかぶさったりして、
どんどんぐちゃぐちゃになって訳がわからなくなっていくことが多いと思います。



ただし、sasagakiさんがおっしゃるようにコメントの書き方によっては、後からの見直しが逆に困難になると思いますので、全くコメントを付けないのはどうかと思いますが、必要最低限は要るのではと考えます。


かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2009-04-02 10:08
基本的にコメントアウトはナシですね。
変更履歴はソース管理で残してます。

都度内部コンパイルするスクリプト系の言語だと、
コメントアウト部分は全て無駄ですね。
cyanberry
常連さん
会議室デビュー日: 2005/01/07
投稿数: 37
投稿日時: 2009-04-02 11:06
皆様、回答と情報ありがとうございます。

いろいろ情報をいただいて、それでもまだ個人的には「可読性が損なわれない範囲である程度は残した方が良いのでは?」と思っています。

ただ、あるところで見かけましたが「Subverisonでのコンペアが見づらくなる」というのは納得です。
また、「コメントアウトを復活して難を逃れたことは一度も無い」とあるところで見かけましたが、確かに納得です。
結局、自分に安心感を与えたいだけの自己満足なのかもしれませんね。

私もここらへんで心機一転考え方を変えて、その"今風"のやり方で試しにやってみようかと思います。
修正日付、修正者、修正内容に関してはすべてSubversionに頼り、古いソースは残さず、コメントは機能説明だけを最低限つける、という方向でやってみようと思います。

きっとそれはそれで不便なことが出てくるのでしょうが、またその時方針を見直そうかと思います。

スキルアップ/キャリアアップ(JOB@IT)