コピペは悪か? :-|

ソースコードのコピー&ペーストは、完全に悪だろうか。

  • プロジェクトによっては、コピー&ペーストをしてもよい。ほかの部分でもされているなら、変にメソッド抽出や別クラスへの委譲などするよりは、コピー&ペーストしたほうがよい。
  • ごくまれにだが、許せる場合があるかもしれない。そのようなケースにほとんどお目にかかったことは無いが、すべてを完全否定はできない。
  • 絶対に悪である。よいわけが無い。ソースのコピー&ペーストを許すと、リファクタリングも難しくなり、修正するたびに、デグレードの可能性が増えてしまう。

実は、私は2番目の「もしかしたら、完全な悪ではないかもしれない。」と思っている。しかし、今までの経験ではまだ一度もコピー&ペーストしたほうがよかった、と思える状況に遭遇したことはなかった。(もちろん、ソースのコピー&ペーストは山ほど見てきた。)

しかし、1番を推奨する人もいるようだ。実際聞いてみると、

  • 今までコピー&ペーストを実施してきたが、問題は起きていない。*1
  • 現状、とても忙しいので早く作るにはそのほうがよい。
  • プログラマにお願いするには、慣れている手法でやってもらったほうがよい。
  • メソッド化などすると、パフォーマンスが悪くなる。*2
  • 最初から作り直すのなら、コピー&ペーストをやめて作るのもよい。しかし、すでにそう作られているのだから、そのままの文化で進んだほうがわかりやすい。

だそうだ。
うーん、そうなのかぁ。

*1:ホントか??

*2:???