最近「プログラミングはコピペでできるから簡単!」と考える人が多くなってきている印象があります.
確かに,インターネット上には優れたコードがたくさん落ちてますし,参考にすることはいいことなのですが,それをコピペして自分の実装したシステムの一部として動かすのはナンセンスです.
このようなプログラミングにおける考え方を「DRYの法則(Don’t Repeat Yourself)」と言います.
ではなぜ「DRYの法則」ではコピペがナンセンスとされているのか.
その理由として,3つ挙げられます.
- コードを読むのが難しくなる(可読性)
- コードを修正するのが難しくなる(保守性)
- レガシーなコードになる
それぞれ解説していきますね.
コードを読むのが難しくなる(可読性)
コピペを多用したコーディングを行うと,自然とコードの量が多くなってしまいます.
なぜかというと,例えば処理Aを行うコードが10行だとしてこれをコピペで使い回すとします.すると,この処理Aが10回別のところで使われているとすると,それを同じようにコピペして実装すると100行になります.これはいわゆる「冗長で読みにくいコード」になります.
読みやすいコードにするためには,この繰り返し行われている処理Aを関数化等で余分なコードを省くことが大事です.
コードを修正するのが難しくなる(保守性)
これも先程の可読性の話と重複しますが,コピペを使って同じコードを使い回すといざ修正するときに,コピペした全てのコードを修正する必要があります.
先程の例で言うと,10箇所コピペした箇所があるとすると,そのコードを修正するときにその10箇所全てを修正する必要があります.
これを防ぐためにも,このコピペしたコードをそのまま利用するのではなく,関数化することで効率よく修正(メンテナンス)することができます.
レガシーなコードになる
レガシーなコードとは「時代遅れな古いコード」という意味です.
具体的には,コード自体はちゃんと動いているものの,客観的に見ると理解しにくく,修正や加筆もしにくいコードという意味です.
またレガシーなコードは上に示したような特徴を持つため,テストがしにくいコードとなっています.その背景からここ最近では「レガシーなコード≒テストが行われていないコード」と認識されるようになってきました.
コピペをする人は「コードの意味はよくわかっていないけど,とりあえず意図した通りに動くからいいや」と思ってる人が多いと思います.
確かにコピペした方が実装するスピードは速くなりますが,その分「レガシーで難解なコードになりがち」となってしまいます.
またコードの意味をよく理解していないためにテストもできず,結果として「テストが行われていないコード」となってしまいます.
そのためにも,コピペはせず,コードの意味をちゃんと理解した上で実装することが大事です
ではどうすれば良いのか
「コピペがダメなら全部自力で手入力で一から書けってこと?」「そんなの無理!」と思う方もいるかもしれませんが,そうではありません.
コピペするのはOKです.ただそのコードを放置してはいけません.
上で何度も述べた通り,コピペしたコードの意味を理解し,余分な部分を省き,関数化等で最適化をする.これを行うことが大事なのです.この作業をリファクタリングと言います.
リファクタリングをきちんと行えば,そのコードは単にコピペで使い回したコードではなく,メンテナンスがしやすい素晴らしいコードとなります
特に使い慣れていない言語やフレームワークを使うとき,まずはコピペをして動かしてみるというケースが多いと思います.ただ,それをそのままシステムの一部として動かすのではなく,この「DRYの法則」に則ってリファクタリングすることを忘れないようにしましょう.
コメント