元ネタ
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=41464&forum=7
http://blogs.wankuma.com/jeanne/archive/2007/10/11/101389.aspx
一度提供したクラスやクラスのシグネチャは変更してはならない。という原則があります。しかし、
一度作成し提供した Method_A(int,int) を改変してMethod_A_Ex(int,int) を作った場合、Method_A()をMethod_A_Ex()に一斉に変更せよと通達を出すのはよくあることです。その時点でMethod_Aは死ぬので破棄していいと思うのです。 ところが、Method_A()が過去の異なるプロジェクトで作成したものであったら怖くて消せないです。
別のケースでは必要でないのに使うかもしれない、あれば便利だろうという親切心から作成する開発者がいたりします。(以下の例はジェネリックが普及する以前と思って下さい。)
Method_C(int,int); を作った開発者は、このルーチンは他の型でも使えると考えて、Method_C(long,long), Method_C(double,double) と類似のMethodを複数個作成した。しかし使われるのは Method_C(int,int)のみであって、Method_C(long,long)とMethod_C(double,double)は使われることはなかった。
後日指摘すると、使うかもしれないので作って置いたと言う。
別の例では、Method_A()のロジックの出来が不満足で改良した際に変更前のMethod_A()をMethod_A_Old()とrenameし新たにMethod_A()を作り、Method_A_Old()は残骸として残存して月日が流れて、だれも怖くて削除できなくなった。
コードレビューを実施する部署は多いですが、納品物のソースを隈なくチェックすることは出来ないです。作り手の姿勢に依存するのでしょうね。
使うかも知れない、後日必要になるかもしれない.......まず使われることはありません。
そのようなコードは個人のFileに格納しておいて、変更依頼があれば引き出すようにすればよいのでは。
いずれにしてもソースを汚すも汚さないも人次第なので、前近代的な産業だなぁって思います。