だからソース自身に履歴を残すなと

ソースに履歴を残す、というのは、つまるところ下記のようなコードを書き残すことである。

// 2006.12.11 idesaku add start
delegate.execute(HOGE_JNDI);
// 2006.12.11 idesaku add end

古くて不勉強な人間ほどやりたがる。極めて愚劣な履歴の残し方だ。ここで残したコードの90%以上は二度と顧みられることはなく、さりとて消されもせず永久に残り続け、可読性を落とし、バグを誘発させる。

修正内容が残っていないと、いざというときに元に戻せない。だから、履歴を残す。それはわかる。が、対処の仕方が間違っている。現代の開発ではバージョン管理システムが存在する。変更履歴は全てリポジトリに残される。だから、可読性を犠牲にして、あんな役に立たないコメントを残す必要など無い。

バージョン管理システムの使い方がわからない、という輩もいる。友人が相手にしている人間が、これを理由にして変更履歴をソース自身に書き残すよう要請してくるという。

その理由は成り立たない。

もしその相手がソースを読む人間、例えばプログラマであれば、当然バージョン管理システムの使い方など覚えているか、学習する能力があるはずであり、バージョン管理システムを使えばよいことだ。だから、ソース自身に履歴を書く必要は無い。

もしその相手がソースを読まない人間、例えば管理職であれば、そもそもソースを見ないのだから関係がなかろう。見たとしても、その変更履歴から何か読み取れるのか?まぁ無理だろう。だから、ソース自身に履歴を書く必要は無い。

相手が誰であろうと、ソースを汚してよい理由は存在しない。

バージョン管理システムを導入しないという選択肢はそれこそ絶対にありえない。手書きによる差分情報作成なんぞ、バージョン管理システムが持つ正確さと利便性の足下にも及ばない。

好きなバージョン管理システムを選んで、リポジトリを作成しよう。RCSだろうがSCCSだろうがCVSだろうがSubversionだろうがVSSだろうがPerforceだろうがかまわない。そして、使い方を学習して、使いこなして、やっかい(と思われがちだが実は単純)なこのシステムを自分の手足の延長、自分の補助頭脳とするのだ。手足の延長と書いてはいるが、間違いなく手で履歴を書き残すよりも確実なのだから。