
下記の記事にて、クラス設計においては、「凝縮度を高めて、結合度を弱める」というのがよい設計だということはお伝えさせて頂きました。
図にすると下記のイメージですよね。
「凝縮度」、「結合度」に関しては、オブジェクト指向プログラミングが導入する前から提唱されていた考え方ですが、オブジェクト指向全盛の今でも重要な考え方に変わりありません。
では、具体的にどのように作れば、「独立性の高いプログラム」になるのでしょうか。
わかりやすい名前をつけること。
クラスの「凝縮度を高める」には、「クラスにわかりやすい名前をつける」ことです。
一言で言えば、どのクラスってどんなクラスというのを考えた上で命名することが非常に重要です。
逆に言えば、「そのクラスってどんなクラス」かを、一言でなかなかいい表すのが難しい場合は、クラスを分割する余地があるといえるでしょう。
一つの考え方として言語やフレームワーク、デザインパターンなどで使われている名前をそのまま使うという手法です。(例えば、xxxActionだったりとか、xxxListenerとか。)
クラスのよくある命名規則については以下の記事にまとめております。
できるだけカプセル化して、メンバ(フィールド、メソッド)を隠すこと。
必要ない情報は、外部からできるだけ隠蔽しましょう。
一番定型的なのは、そのクラスのみしか明らかに使わない「インスタンス変数」ですね。
オブジェクト指向で言えば、カプセル化をしっかりと学ぶ必要があります。凝縮度を高める以外にも、隠蔽することで色々なメリットがあったりします。
詳しくは下記の記事をご覧下さい。
クラスやメソッドはできるだけ小さく作ること。
できるだけ、クラスやメソッドは小さく作ることを意識しましょう。
多くのメソッドやフィールドが一つのクラスに定義されていると理解しずらくなります。
クラスの行数の上限は?
一般的には500行以内に収めるようにすると良いでしょう。それ以上の行数になるようであれば可読性が落ちてしまいますので別クラスに分割することも検討すると良いでしょう。
メソッドの行数の上限は?
オブジェクト指向プログラミングであれば、一つのメソッドの行数の上限の目安は、20~30行程度と考えるとよいでしょう。(どんなに長くなっても100行以内)
少ないと思われるかもしれませんが、オブジェクト指向を使ったメソッドの行数は、数行から時には1行程度になることも珍しくありません。
この記事へのコメントはありません。