skillup

技術ブログ

プログラミング全般

オブジェクト指向 プレゼンテーション層

投稿日:

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。

本日はプレゼンテーション層、いわゆるMVCのViewにあたる部分。

プレゼンテーション層の考え方

要点

  • 画面ごとにプログラムを組むのではなく、関心ごとでプログラムを組む。そうしないと複数の画面でコードが重複する
  • 例えば詳細画面と登録確認画面は表示するデータの形式は一緒なことが多い。画面は違ってもプログラムは一緒
  • 関心ごとにより分け、画面の表示ロジックと業務ロジックを分離させる
  • 画面自体も機能ごとにわけ、あれもこれも詰め込まない(ECなら顧客氏名、注文内容、決済方法、配送手段、連絡先、注文確定などは分ける)
  • 画面の項目ごとに関心ごとをグルーピングする、あるいは画面自体を別にする。複数ステップ画面(タスクベースのユーザーインターフェイス)。1ページ、1メッセージ(プレゼント一緒!)
  • 画面とドメインオブジェクトが対応していないときは、ドメインオブジェクトの設計を見直す絶好のチャンス(関心ごとになっているのか?)。画面とドメインオブジェクトは利用者の関心ごとが一致するはず
  • 画面側のif文の分岐やcssの変更などもドメインオブジェクトの中に格納する。なぜならそれは関心ごとという枠組みだから。こうすることによりドメインオブジェクトだけを変更対象にすればOK。
  • 画面項目のグルーピング
    近接・・距離の近さは情報の近さ
    整理・・同じ意味のものは同じラインに。
    対比・・意味の重みの違いは文字の大きさや色の違いで区別
    反復・・同じ意味のものは同じパターンで

感想

画面項目を情報の意味でグルーピングするというのは、いろんな本でも書かれていたけど、基本ですね。今の業務アプリも特に注文画面にいろんな情報が詰め込まれており、あれもこれもになってしまっている。

というかデザインだけに限らずあらゆる領域で必要になってくる考え方だと思います。画面の分岐による変更ロジックをドメインオブジェクトの中に組み込む、というのは驚き(本書の中でもかかれていますが・・・)。ようはドメインオブジェクト=関心ごとなのだから、すべてドメインオブジェクトの中に入ってくるだろうということらしいんですね。

 

 

-プログラミング全般

執筆者:


comment

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

関連記事

no image

オブジェクト指向設計 依存関係の管理

オブジェクト指向シリーズ。読みにくい本が多い中でオブジェクト指向設計実践ガイドは勉強になるなー。 Contents1 依存関係の管理1.1 メモ1.2 実際のコーディング上のコツ1.3 感想 依存関係 …

no image

テストコードの考え方

一般的なプログラマにとって日々の業務で何がいやかというと、 理不尽な納期 むちゃくちゃな仕様変更 頻発するバグ・不具合 であることは異論がないでしょう。仕様変更や納期などは自分で何とかしがたい部分もあ …

no image

クラスメソッドとインスタンスメソッド

以前staticメソッドを定義したときに、記法がインスタンスメソッドの呼び方でも呼べてしまうことがあったので、これを機にインスタンス・クラス×変数・メソッドちょっと調べてみました。 言葉で書くよりコー …

no image

コードの抽象化

リーダブルコードも終盤に少しずつ近づいてきました。 今まではどちらかというとコードの点や線の技術に注目してきましたが、これからは面的な要素に注目していきます。 リーダブルコードでは「無関係の下位問題を …

no image

Webの高速化に関して

Webの高速化に関してメモ。 高速化って言っても幅広いんですけどね。自分が行なっている対策に関して。 一応LAMP環境を前提にしてます。 Contents1 一番大事なのは測定2 DB対策3 フロント …