
Dry, Wet, Hot, Cold. これってただの言葉だよね?

すべてのプログラマーではないにしても、コードに関連する DRY と WET という言葉を聞いたことがある人は多いはずです。
DRY – Don’t Repeat Yourself
WET – Write Everything Twice
ちょっと考えてみてください。 もし、あなたの直感が DRY に傾いているとしたら、それは正しいでしょう。
プログラマーとして、コードを DRY に保つ、つまり、コードを繰り返さないように努力することは、一般的にベスト プラクティス(最良の実践方法)です。
WET コードの例をいくつか挙げてみましょう。 (Ruby を使用)
class John
def build(n)
n + 1
end def destroy(n)
n - 1
end
end class Peter
def build(n)
n + 1
end
end
Write Everything Twice のスポットに気づきましたか。
この場合、John & Peter という両方のクラスが build メソッドを使用する能力を持っていることになります。 しかし、将来ビルドメソッドに変更を加える場合、ビルドメソッドが使用される各スポットで、2回行う必要があります。
一方、コードがDRYであれば、その変更は1回で済みます。 この場合、モジュールを使用することにより、コードを DRY に保つことができます。 そしてもちろん、ジョンはまだ自分の destroy メソッドを保持しています。
コードベースを DRY に保つことは、変更がかなり頻繁に起こることが予測される場所で最も役に立ちます。 DRY なコードを持つことは、そのコードが使用される可能性のあるすべての場所ではなく、1 つまたはいくつかの領域でそれらの変更を行う必要があるだけであることを意味します。 5 つの異なる場所で同一のコードに変更を加える必要があり、そのうちの 1 つの場所のコードを変更するのを忘れたとします… 問題がわかりますか。 プログラムがクラッシュするか、あるいはさらに悪いことに、正常に見えるのに時代遅れのプロシージャを使用することになります。
そうは言っても、WET コードには利点があります。
さらに、過度に DRY なコードは、あなたのコードを使用する次のプログラマー (あなた自身を含む) の頭痛の種になる可能性があります。 これは、コードの特定の行で作用している要因を把握するために、退屈な量の論理的ジャンプを行うことに起因しています。 明日のあなたはそれを評価するでしょう。