Copy-Paste コードは何故良くないか

先ずはじめに、Copy-Pasteコードの全てが悪いというつもりはありません。
適切に使えば、そのお手軽さゆえに強力なツールであることは間違いありません。良く使うコードパターンなんだけどスニペットに登録するまでもない場合(例:引数の文字数チェック-Lengthを比較しておしまい)とか、そんな例ですね。
ここで言いたいのは、私的に「適切でない」場合の話です。
例えば「ボタン1」の処理と「ボタン2」の処理。
これをCopy-Pasteで済ますというのは、これは良くないと思うわけです。
この場合、全く同じであれば、関数を作って両方から呼べば済むだけの話です。確かに[Ctrl]+[C] – [Ctrl]+[V] より、関数を作る方が手数が多いですが、後々お釣りが来るぐらいのメリットがあります(これについては後述)。
じゃぁ、Copy-Pasteしてちょいと変更する場合は?
その「ちょいと」具合によりますが、多くの場合、関数にしてしまってパラメータで処理を分ける事ができるので、そうする方が多いですね。
これは処理を分けるパターンの数が多くなると破綻するので、そういう気配を感じたら、Factoryパターンから多態性(ポリモーフィズム)を利用するように展開すればよいでしょう。
で、なぜそうするのか?なぜ、この手数を補って余りあるメリットがあるのか。
これは、テスト時と保守フェーズで明らかになります。
特に、テストが修羅場を迎えている最中の修正ですね。
こういうときは少しでも早く直してしまいたいので、最初に目に付いた「患部」を直して、それで終わってしまうことが多々あります。
ところが、Copy-Pasteだと、同じようなコードがあちこちにあることになるので、それらを全部探し出して修正して…
さらに保守ともなると、「同じことをやっている」或いは「やっていそうな」場所を全部探すことになります。そのために、grepを駆けて…
そういう作業を手っ取り早く終わらせるためにも、Copy-Pasteでは無く、敢えて一手間かけた方が良いわけです。
確かに、コードブロックを切り出して関数にするのは若干面倒くさいですが、その辺りは慣れですし、或いは”Refactor!”等のコード作成支援ツールが大いに助けてくれます。

Copy-Paste コードは何故良くないか” への1件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Spam Protection by WP-SpamFree