Yuki's Tech Blog

仕事で得た知見や勉強した技術を書きます。

【オブジェクト指向設計実践ガイド】第2 章 単一責任のクラスを設計するを読んで学んだことをざっくりまとめてみた

目次

クラスとは

クラスとは、あるオブジェクトに関する変数と、あるオブジェクトに関する処理を一つにまとめたものです。

クラスを定義するメリット

個人的には以下のメリットがあるのかなと考えました。

  • クラスを定義することで、仕様変更に対する影響範囲(変数の追加や、処理の変更)をクラスに局所化できる。
  • クラスを定義することで、同じ性質のオブジェクトを簡単に作ることができて、再利用性が高くなる。同じようなコードをもう一度書かなくて良くなる。
  • クラスを定義することで、コードのまとまりを意味のあるまとまりとして管理することができる。

ドメインとは何か

ドメインとは、アプリケーションが対象とする問題領域のことです。問題領域とは、解決すべき問題が潜んでいる領域のことです。ドメインを分析して構成概念を抽出することをモデリングと呼びます。モデリングの結果、得られた概念のことをドメインモデルと呼びます。ドメインモデルは、その概念に関連する属性と振る舞いを持ったオブジェクトとして定義されます。

このドメインモデルをコードで表現する際に、クラスを用います。

メソッド、手続き、振る舞いの違いとは

メソッドと手続き、振る舞い(オブジェクト指向における振る舞いは、オブジェクトの動作の仕方を表している)はどれも、一定の処理をまとめて抜き出したものです。そのため、概念的には同じなので、特に違いを意識する必要はないでしょう。

DRY原則の本質

私がRailsを勉強してたとき、「繰り返しはよくない」と散々言われてきて、そのようなこともあり、DRY原則は「同じようなコードを繰り返しは書くな」という意味だと思っていました。似たようなコードがあった場合、ひたすら共通化していました。

しかし、DRY原則の本当の意味は、「同じようなコードを排除することで、コードの変更箇所を一箇所に限定すること」ってのを最近知りました。つまり、「同じようなコードを排除してコード量を減らすこと」が目的なのではなくて、「変更箇所を一箇所に限定して、変更コストを最小限にすること」が目的なのです。

あと、DRY原則を適用させる上で注意すべきことは、何でもかんでもDRY原則を適用させるべきではないということです。DRY原則を適用させるということは、つまり、コードを共通化するということです。コードを共通化することによって、逆に変更コストが高くつく場合もあります(コードを共通化するということは、使われる場所に応じた独自の処理を追加できないということを意味します)。そのため、状況に応じて、メリットデメリットを考えて、DRY原則を適用させるかを判断するようにしましょう。

メッセージを送り出すとは?

凝縮度とは

単一責任の原則とは

参考記事

クラスとは - 意味をわかりやすく - IT用語辞典 e-Words

第13回 クラスはプログラミングを楽にする道具(1) | gihyo.jp

[プログラミング]クラスとは なぜ重要?動機やメリットは? | スモビュ!

ドメイン駆動設計入門【DDDをわかりやすく解説】 | 楽水

ドメインとかモデルとかよく分かってない - Neo's World

関数と手続きとメソッドとサブルーチンの違いを教えてください。 - 厳密な... - Yahoo!知恵袋

振舞(ふるまう)とは? 意味や使い方 - コトバンク

DRY原則とは - 意味をわかりやすく - IT用語辞典 e-Words