skillup

技術ブログ

プログラミング全般

オブジェクト指向設計 柔軟なインターフェイス

投稿日:2017年8月28日 更新日:

オブジェクト指向シリーズ。今回はインターフェイスについて。

インターフェイスといっても、implementsを使った実装だけではなく、要はあるクラスが外部の窓口となるときに使うメソッドってことだと思う。

柔軟なインターフェイス

メモ

  • インターフェイス(正確にはパブリックインターフェイス)により内部構造を隠蔽する(p90の厨房の例はわかりやすすぎ)のが基本。
  • パブリックインターフェイスはクラスの責任を明確に述べる契約書
  • シーケンス図を書いて、「どのように」を伝えるのではなく「何を」頼むか。
  • 内部のクラスにはあえてタッチせず(これに関しては「どのように」に属する)、あくまでインとアウトだけを考える(これが「何を」に当たる)
  • 内部のクラスが保持しているクラスのさらにメソッド・・みたいな書き方をしない
  • なるべく内部を公開しない。インターフェイスが契約書であり、

実際のコーディング上のコツ

  • 引数に関しては不変なものを変数でとり、オプションの引数としてハッシュをとる。
  • チェーン的なドットは1つまで(Aに依存しているBに依存しているCというものを使ってはダメ)にしてなるべく依存度を下げる。3~4つのようなチェーンメソッドは依存度を上げ、変更が難しくなる。デルメルの法則(P114)

感想

この章はコードがない分抽象的な例が多くてなかなか難しかった・・。

ポイントとしては内部構造にできるだけ、後悔しない=依存しないようにするってことだと思う。入口(インターフェイス)のところで主要となる引数と戻り値を決めたら内部構造はなるべく隠蔽するスタイルをとるようにする。ドットは1つまでというのはチェーン的なメソッドを前提とするとクラスの関連性が深くなってしまい、密結合になってしまうため。

自分自身、このスタイルのコーディングを練習しているけど、1クラスを単一責任にするとpublicなクラス(外部から呼ばれる)は非常に少なくなり、あとは内部の中だけで呼ばれるものが非常に多くなる。このスタイルを目指すべし。また内部で外部のクラスを使うときは依存度が高くならないように(クラスのクラスなど)注意。

-プログラミング全般
-

執筆者:


comment

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

関連記事

no image

バッチスクリプトで気をつけたい点

実務でバッチ処理を作る際に気をつけるべきと思ったこと。 基本的にエラーをいかに捉えていかにログに吐くかを最初に考える。まずはエラーありき。失敗するもの、想定した値がこない、あるいは値がないを前提として …

no image

フレームワーク作成時の注意ポイント

以前も多分書いていますが、フレームワーク作成時のポイントなどを列挙。 次元が違うものも多々含まれているかも。 ルーティング機能 基本設定情報の読み込み キャッシュ機能 データベース Form情報の管理 …

no image

オブジェクト指向 値オブジェクトの活用と場合分けに関して

オブジェクト指向 その1 オブジェクト指向 その2 オブジェクト指向 その3 でオブジェクト指向に触れたんですが、基本から勉強しなおす必要があると思い、まとめ&追記 参考文献 現場で役に立つシステム設 …

no image

PCクラッシュ時に備えて

先日、ずっとメインで使っていた会社のノートPCがクラッシュし、再起不能になりました。ファイルなんかはクラウドで管理していたものが多かったので実害はあまりなかったんですが、当然ゼロではありませんでした。 …

no image

OSコマンドインジェクション

Contents1 OSコマンドインジェクションとは?2 被害3 対策4 参考リンク OSコマンドインジェクションとは? OSに対する命令文を不正に紛れ込ませて攻撃させる手法。 被害 サーバー内のファ …