その他

ドメインオブジェクトとWeb API

データ形式とドメインオブジェクトを変換する際に起こる不一致 JSONとドメインオブジェクトを単純に変換するだけでは、以下の不一致がある場合不都合になる。 関心事の不一致 ドメインオブジェクトの持つ全ての情報がAPIを利用する側で必要とは限らない。ま…

画面とドメインオブジェクトの設計を連動させる

関心事を分けて整理する 画面アプリケーションのコードが複雑になる要因は次の2つ。 画面そのものが複雑 画面の表示ロジックと業務ロジックが分離できていない 次の方針で関心事を整理すれば、画面アプリケーションの複雑さを改善し、変更を楽で安全にでき…

オブジェクトの設計とテーブルの設計

オブジェクトとテーブルは似てくる オブジェクトとテーブルはほぼ一対一に対応することがあるが、設計のアプローチや設計を変更する動機が本質的に異なる。 オブジェクトはプログラムのロジックを重複させないための仕組みで、データとロジックの組み合わせ…

ドメインモデルによる機能の実現

アプリケーション層のクラス アプリケーション層の役割は以下 プレゼンテーション層の依頼を受ける 適切なドメインオブジェクトに処理を依頼する プレゼンテーション層に結果を返す データソース層に入出力を指示する アプリケーション層のクラスは業務サー…

ドメインモデルの設計

ドメインモデルの作り方 1 部分を作りながら全体を作っていく オブジェクト指向のアプローチとして、個々の部品を作り始め、それを組み合わせながら全体を構築していく ある部分に注目してその部分に必要なデータとそれを使ったロジックを一緒に考え、クラス…

業務ロジックの整理 〜三層+ドメインモデルの構築〜

クラスとはデータとロジックを一つのプログラミング単位としてまとめるための仕組みであり、データをインスタンス変数として持ち、それに対するロジックをメソッドに書くのがオブジェクト指向におけるクラスの本来の使い方である。 データとロジックを別のク…

場合分けロジックの整理

場合分けロジックの望ましい書き方 判断や処理のロジックをメソッドとして独立させる elseをなくす(早期リターンする=ガード節にする)とコードが簡潔になる インターフェースを使って異なるクラスを同じクラスとして扱う クラスを区別するための場合分け…

ソースコードの整理

プログラムの変更が楽になる書き方 変数名・関数名にはわかりやすい名前を使う 長いメソッドは段落を分ける 段落をメソッドとして独立(抽出)させてもよい 変更箇所をそのメソッド内に限定できる(そのロジックを他の場所でも使うことになると、変更箇所が…

3層アーキテクチャ

アプリケーション内の3層アーキテクチャ プレゼンテーション層 表示上の関心。UI。 ビジネスロジック層 コアなルール。 データアクセス層 データの永続化。 MVCはプレゼンテーション層周辺のアーキテクチャ。ViewとControllerはプレゼンテーション層に、Mode…