DRY原則とは?プログラミング初心者からのステップアップ!

DRY原則とは?プログラミング初心者からのステップアップ!
スポンサードリンク
Advertisement

 

どーも、えーちゃん(@e_jtest)です。

 

今回はプログラミング初心者の方に向けて書いてみます。

 

プログラミング初心者の方が疑問に思うことの1つに、「自分のプログラムは良いプログラムなのか?」ということがあると思います。

 

私自身も最初のうちは自分のプログラムが良いプログラムなのかどうかはわかりませんでした。

 

会社の先輩に聞いたり勉強したりして良いプログラムとはどういうものなのかを学びました。

 

そのうちの1つにDRY原則というものがあります。

 

プログラミングにはDRY原則という1つの考え方があり、これを知っているのといないとではプログラミングに差が出てくるものです。

 

最近プログラミングを始めたという方は知っておいて損のない知識なので、ぜひ参考にしてみてください!

 

スポンサードリンク
Advertisement

 

 

DRY原則とは?

 

DRY原則とはなんでしょうか?

 

乾いたコード?と思うかもしれないですが、残念ながら違います(笑)

 

DRY原則とは、「Don’t Repeat Yourself」の頭文字を取ったものです。

 

どういう意味かというと、「同じことを繰り返し書くな」ということです。

 

プログラミングにおいて、重複した処理というのはこのDRY原則に反するわけなので推奨されません。

 

同じような処理が複数あった場合、修正するのが面倒になったり、可読性が下がるなどの弊害を招きやすくなります。

 

なので、基本的にはDRY原則に従ってコードを書いていくというのが理想だと思います。

 

まとめられる処理というのはまとめてしまった方が良い場合もあるということですね。

 

 

DRY原則は抽象的なメソッドを用意する必要がある

 

DRY原則についてはなんとなくわかってもらえたかと思います。

 

じゃあ実際どうやって書いたら良いのかというと、プログラムを抽象的に書く必要があります。

 

言い換えると、汎用的なプログラムを書く必要があります。

 

極端な例ですが、CakePHPでControllerでモデルを読み込みたい場合は、以下のように記述します。

 

// Controllerのinputメソッドでモデルを呼ぶ
public function input() {
    $this->loadModel('Product');
    $this->loadModel('Brand');
    $this->loadModel('Other');
}

 

これだと同じことを何度も書く必要があり、冗長になってしまいます。
読み込むモデルが増えた場合はさらに増やす必要があるということです。

 

まあこの程度であればコピペも楽ですが、メソッドにも同様のことが言えます。

 

抽象的・汎用的に書く場合は、以下のようにすると1つで済みます。

 

// Controllerクラスのプロパティに読み込むモデルを設定する
public $useModels = [
    'Product',
    'Brand',
    'Other',
]

public function input() {
    foreach($this->useModels as $model) {
        $this->loadModel($model);
    }
}

 

上記のように、プロパティを設定してあげて、ループしてあげれば読み込む記述自体は1つで済みます。

 

簡単な例なのであまり参考にならなかったかもしれないですが、言いたいことはこういうことです。

 

複数のコントローラからモデルを読み込みたいという場合は、親クラスでモデルをロードするメソッドを用意してあげるという手もあるでしょう。

 

 

DRY原則は絶対ではないということ

 

DRY原則について紹介してきましたが、あくまでDRY原則は考え方の1つです。

 

DRY原則が絶対であり、必ず守らなきゃいけない!と思うのは間違いです。

 

状況によっては同じようなコードを書いた方が良いという場合もありますし、抽象的に書くというのは難しい場合も多く、工数がかかってしまう場合もあります。

 

抽象化したことによって複雑なプログラムになってわかりにくくなる場合もあるでしょうし、可読性が下がっては本末転倒だと思います。

 

なので、何でもかんでも「抽象的に書いておけばいいんだ!DRYだ!DRY!」と思うのではなく、「この処理は共通化できないか?」「汎用的にした方が良いのでは?」という疑問を常に持っておくことが大切かと思います。

 

さいごに

 

とはいえ、初心者のうちはどう書くのが良いのかわからないと思います。

 

なので、経験者にレビューしてもらうというのが1番良いです。

 

周りにレビューしてくれる人がいないという人は、タイムチケットなどのサービスでエンジニアの人にレビューしてもらうという方法もあります。

 

会員数10万人突破!+【タイムチケット】

 

また、以下のような本で勉強するというのも良いと思いますので、紹介しておきます。

 

・リーダブルコード

Amazonで詳細を見る

 

楽天市場で詳細を見る

 

 

・プリンシプル オブ プログラミング

Amazonで詳細を見る

 

楽天市場で詳細を見る

 

 

以上、DRY原則とは?プログラミング初心者からのステップアップ!でした。