http://wiki.c2.com/?CopyAndPasteProgramming
コピーペースト機能を使って書かれたコードに関するアンチパターンです。一般にコピペプログラミングは良くないと言われますが、勘違いしてはいけないのが、このアンチパターンは、コピーペーストする行為そのものを禁止しているわけではないということです。コピペプログラミング禁止の真意は、DRY 原則 と同じです。
既存のプログラムとわずかに仕様の異なるプログラムが必要なとき、あるいは、すでに作られたものと同じ処理が別の箇所にも必要になったとき、安易にコピーして部分修正で仕事を進めてしまうと、非常に無駄の多いプロダクトが出来上がります。
プログラムは、たんに動けばいいわけではありません。冗長で重複が多いコード群は、その量的な無駄だけでも、メンテナンスを困難にします。コードの読みやすさはスクロール量に驚くほど反比例します。
しかも、もしコピーされたコードにバグが含まれていると、一箇所直すだけでは済まなくなります。コピー先を同じように修正すると、その場での書き換え内容と矛盾して、新たなバグを生むこともあります。
手続きをコピーするとき、せっかく何らかの意図で再利用されるものなのに、名前を与えるチャンスをみすみす逃してしまうことも問題です。どんなに優秀なプログラマーでも、いちいちコメントと手続きを読むのは苦痛です。適切なクラス名やメソッド名ほど、コードの可読性に貢献するものはありません。
コードを再利用するときは、いったんはコピペしても良い (初回単体テストをクリアするためだけ、などの目的で) けれど、かならずその意味を理解し、意味のある名前を与えて、共通化・一般化されたかたちにリファクタリングしましょう。