プログラミングのDRY

DRY (Don’t Repeat Yourself) 原則がプログラミングには存在します。
重複する作業はしないようにしようというシンプルな原則です。

Wikiを参照すると次の通り。

Don’t repeat yourself (DRY) あるいはSingle Source of truth(英)[要出典]は、特にコンピューティングの領域で、重複を防ぐ考え方である。この哲学は、情報の重複は変更の困難さを増大し透明性を減少させ、不一致を生じる可能性につながるため、重複するべきでないことを強調する。

https://ja.wikipedia.org/wiki/Don%27t_repeat_yourself

しかし、この原則を守ることはとても難しく、特にソースコードの量が多くなればなるほど同じ処理がどこかに出てきてしまいます。

これを防ぐために、私がどのように考えているのか書いてみたいと思います。

自動化する

プログラミングを行っていくにあたって、多くの作業は同じことの繰り返しになります。

例えばスニペット
funcと打ったらfunctionの構成が出てくるようにしたり。

// 「func」 ->
private void function() {
    return
}

例えばテストコード
テストは同じことの繰り返しになることがほとんどなので、
自動化するためのコードを書いておくようにするなど。

抽象化する

プログラムの抽象度を上げることも手法の一つになるかと思います。

「スマホ」を作りたいときに、「Android」クラスと、「iPhone」クラスを作ってしまうと、タッチ操作など同じ操作を繰り返すことになってしまいます。

そこで、抽象度を上げて「スマホOS」クラスに、「Android」「iOS」クラスを入れることで、タッチ操作は共通して使えて、中身だけ入れ替えればOKの状態にすることができて、DRYの原則を守ることができます。

名前をつけてまとめる

どこでも使いたくなるような、同じ処理は必ず出てきます。でも、誰がどこで作ったのかを調べるのは容易ではありません。

迷ったときに、まず見てみようかなと思えるような名前をつけて、まとめてみましょう。

例えば、「スマホ」クラスで、「5G」通信をしたいとします。
次のような名前のクラスが羅列されていた場合、「アンテナ」クラスをまず見てみようと思いませんか?

「アンテナ」クラス

「スマホケース」クラス

「画面」クラス

「電源ボタン」クラス

もう少し抽象度を上げて、「通信」クラスや、「エンコード/デコード」クラスなどもあるかもしれません。

何かしらの名前を付けて一つにまとめることで、探してみようかなと思えるようになるので、重複が減ることに繋がります。

まとめ

DRYの原則を守るための行動を書いてみました。

プログラミングでは、同じことの繰り返しを行う部分というものは少なくありません。

少しでも重複を減らして、DRY原則を守ったソースコードになるようになっていければと思うので、参考にしていただければと思います。

コメントを残す

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

CAPTCHA