Submit Search
Upload
リッチなドメインモデル 名前探し
•
77 likes
•
14,474 views
増田 亨
Follow
java_ja java_ja_ddd 2013-3-22 発表。ドメイン駆動設計(DDD)の実践
Read less
Read more
Technology
Report
Share
Report
Share
1 of 29
Download now
Download to read offline
Recommended
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
増田 亨
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
例外設計における大罪
例外設計における大罪
Takuto Wada
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
増田 亨
Recommended
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
増田 亨
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
例外設計における大罪
例外設計における大罪
Takuto Wada
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
増田 亨
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
Tackling Complexity
Tackling Complexity
Yoshitaka Kawashima
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2
増田 亨
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
増田 亨
ドメイン駆動設計入門
ドメイン駆動設計入門
Takuya Kitamura
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
Koichiro Matsuoka
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
Takuya Kawabe
ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀
増田 亨
ちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てる
増田 亨
More Related Content
What's hot
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
Tackling Complexity
Tackling Complexity
Yoshitaka Kawashima
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2
増田 亨
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
増田 亨
ドメイン駆動設計入門
ドメイン駆動設計入門
Takuya Kitamura
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
Koichiro Matsuoka
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
Takuya Kawabe
What's hot
(20)
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Tackling Complexity
Tackling Complexity
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
ドメイン駆動設計入門
ドメイン駆動設計入門
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
Similar to リッチなドメインモデル 名前探し
ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀
増田 亨
ちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てる
増田 亨
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
Tadayoshi Sato
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November
増田 亨
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
増田 亨
Big data解析ビジネス
Big data解析ビジネス
Mie Mori
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展
Recruit Technologies
ドメイン駆動設計入門
ドメイン駆動設計入門
増田 亨
中・大規模サイト作成業務フロー
中・大規模サイト作成業務フロー
senakamura
サービス開発における工程
サービス開発における工程
Hidetoshi Mori
プログラムの大海に溺れないために
プログラムの大海に溺れないために
Zenji Kanzaki
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
Tomoharu ASAMI
Software Development with Symfony
Software Development with Symfony
Atsuhiro Kubo
クラウドがもたらすパラダイムシフト
クラウドがもたらすパラダイムシフト
kurikiyo
Hadoopカンファレンス2013
Hadoopカンファレンス2013
Recruit Technologies
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
増田 亨
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Tomoharu ASAMI
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
Recruit Technologies
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
Tomoharu ASAMI
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
Similar to リッチなドメインモデル 名前探し
(20)
ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀
ちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てる
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
Big data解析ビジネス
Big data解析ビジネス
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展
ドメイン駆動設計入門
ドメイン駆動設計入門
中・大規模サイト作成業務フロー
中・大規模サイト作成業務フロー
サービス開発における工程
サービス開発における工程
プログラムの大海に溺れないために
プログラムの大海に溺れないために
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
Software Development with Symfony
Software Development with Symfony
クラウドがもたらすパラダイムシフト
クラウドがもたらすパラダイムシフト
Hadoopカンファレンス2013
Hadoopカンファレンス2013
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
More from 増田 亨
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
増田 亨
ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善
増田 亨
事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述
増田 亨
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
増田 亨
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
増田 亨
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
増田 亨
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
増田 亨
プロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイル
増田 亨
ソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える
増田 亨
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
増田 亨
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
増田 亨
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
ビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かう
増田 亨
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
増田 亨
DDD sample code explained in Java
DDD sample code explained in Java
増田 亨
アジャイルなソフトウェア設計を目指して
アジャイルなソフトウェア設計を目指して
増田 亨
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
増田 亨
SoR 2.0 summary
SoR 2.0 summary
増田 亨
毎日が越境だ!
毎日が越境だ!
増田 亨
SoR 2.0 基幹システムの再定義と再構築
SoR 2.0 基幹システムの再定義と再構築
増田 亨
More from 増田 亨
(20)
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善
事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
プロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイル
ソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
ビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
DDD sample code explained in Java
DDD sample code explained in Java
アジャイルなソフトウェア設計を目指して
アジャイルなソフトウェア設計を目指して
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
SoR 2.0 summary
SoR 2.0 summary
毎日が越境だ!
毎日が越境だ!
SoR 2.0 基幹システムの再定義と再構築
SoR 2.0 基幹システムの再定義と再構築
Recently uploaded
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
osamut
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Shota Ito
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
sugiuralab
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Atomu Hidaka
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
sugiuralab
Recently uploaded
(7)
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
リッチなドメインモデル 名前探し
1.
ドメイン駆動設計の実践 リッチなドメインモデル
名前探しの旅 Java-ja DDD 2013年3月22日 有限会社 システム設計 増田
2.
Domain-Driven Design (DDD)
ドメイン駆動設計
3.
ドメイン駆動設計への道
設計の改善 ドメインの理解 ・メソッドの構成 オブジェクト指向 ・オブジェクト間の特性移動 設計のスタイル 言葉の力 基礎訓練 ・データの再編成 モデル駆動 ・条件記述の単純化 責任駆動設計 エクササイズ ・メソッド呼び出しの単純化 役割ステレオタイプ 9つのルール 小さく作る 責任割当の原則 GRASP For 実装の原則 Thoughtful Developer ・クラス Leading Designer ・振る舞いとメソッド ・状態とコレクション 契約による設計
4.
ドメイン駆動設計への道
シンプルな トランザクションスクリプト リッチな 大きな トランザクション 泥団子 スクリプト リッチな シンプルな ドメインモデル ドメインモデル アーキテクチャなし 汎用データ型 テーブルと対応した 業務の言葉で組み立てる 汎用命名ルール ドメインオブジェクト 小さなオブジェクト (ドメインの言葉なし) (データの入れ物) 役割を単純に ばらばらに
5.
ドメインモデルの開発 部品探しの旅
イテレーティブで発見的な活動 名前 モデリング プログラミング リファクタリング
6.
プログラミング
は 名前さがし 名前に手を抜けば、ひどい設計になる。 名前にこだわれば、良い設計になる。
7.
クラス名
名前 メソッド名 テーブル名 カラム名 スキーマ名 パッケージ名 フィールド変数名 メッセージキュー名 業務の言葉で パラメータ名 ドメイン名 埋め尽くす ローカル変数名 パス名 サーバー名 ホスト名 id属性 name属性 class 属性
8.
業務の言葉をオブジェクトで 日付 (時分秒を持たない)
金額 管理番号,登録番号 時分(秒を持たない) 単価 取引先コード 翌営業日, 休前日 数量,数量単位,換算 取引区分 月末,月初, 四半期, 半期, 年度 消費税,税率,端数処理 契約番号 期間 合計,小計,総合計 商品番号 有効期限 数量割引 型式コード 予定日 キャンペーン価格 製造番号 期限切れ一週間前のアラート 季節料金 シリアルナンバー 前日のリマインダ キャンセルポリシー … … … プログラミング言語の基本データ型 (Date,String, BigDecimal, Long, …) 業務の基本用語ごとのオブジェクトに、 をラップした その業務用語に関するデータとロジックをまとめる。 超重要 ファンダメンタルなオブジェクト
9.
ドメインオブジェクト
設計パターン ユースケースの実装 シンプルなトランザクションスクリプト Policy 基本の Event Repository Transfer Reference (判断) 部品 (出来事) (記録) (通知) (参照) (制約) 日付 予定日 場所 商品種類 単価 部門 地域 形状 数量 ここが 期間 役割 税率 翌月 拠点 育つほど 型式 担当者 楽になる 有効期限 端数 キャンペーン 超重要 ファンダメンタルなオブジェクト
10.
役に立つ ドメインオブジェクト
11.
良い名前 小さく作る
ばらばらに
12.
良い名前の見つけ方 語彙を増やす
名前の宝庫(初日に見つける) ・その分野のガイドブック ・類似サービスのヘルプ画面 ・類似パッケージソフトのカタログ 読む/調べる (英語版ならクラス名の宝庫) 聴く/尋ねる 頻度、重要度、関心度、… 正しく使う(言葉を使って相手の反応をみる) 言葉を組み合わせてみて反応をみる 似た言葉を使い分けて反応をみる
13.
小さく作る クラス
50行以内 メソッド 3行以内 パッケージ 10ファイル以内 これを超えたら、 分割を考える習慣をつける。
14.
3行メソッド register( order ) {
verify( order ); record( order ); notifyTo(shippingSection); } こういうのが良い感じ
15.
ドメインオブジェクト 実践の小技
16.
How より What 汎用部品を専用部品に
if を使わない for を使わない setter を使わない getter を使わない
17.
How
より What expireDate.add(-1); expireDate.previousDay(); expireDate.dayOfFinalAlert (); 業務の言葉の登場
18.
汎用部品
を 専用部品に String AreaCode Long EntryNumber BigDecimal ラッピング Amount Date ExpireDate List<Appoint> Appointments なんでも屋 目的特化 どこでも使える 業務固有の言葉
19.
if を使わない 強力
enum タイプごとに異なる振る舞いを、どこにも、If 文なしで記述 strategy/state パターン Missing Object パターン (null object) Map,Set 強力 If 文なしで必須/範囲/形式のチェック。 Bean Validator 入力値だけでなくロジック内部でも使える。 契約による設計 (防御的プログラミングと逆の発想) Assert assert date != null : “有効な日付のみ” ; 前提条件は表明するだけ。 if 文では書かない。
20.
定石
for を使わない ファーストクラスコレクション コレクション操作ロジックの置き場所 new Appoints( List<Appoint> ) Collection フレームワーク API の復習 TreeMap, LinkedHashSet, Deque,… ひと手間かければ、for/if いらず Comparable の実装 Comparator の実装 equals()/hashCode() の override
21.
setter を使わない 定石 完全コンストラクタ
Value Object パターン 生成時に必要な値をすべてセット new Money( amount, currency ); setXXX() で状態を変えない ・新しいオブジェクトを作る ・ライフサイクルの短いオブジェクトの導入 (状態を固定できるまで細分化)
22.
getter を使わない @Deprecated
フレームワークは使っていいよ アプリケーションでは使っちゃだめよ get したいときは、役割分担がおかしい。 ロジックの移動 (データにロジックを寄せる) フィールドの移動 (ロジックにデータを寄せる)
23.
ドメインオブジェクトは ばらばらにしておく 実践の小技
24.
構造の変更に備える習慣 構造は安易にコードに埋め込まない。
初期の構造はまちがっていることが多い。 構造の変更を簡単にする準備をしておく。 委譲メソッド 面倒でも隣人とだけ話す × person.contactInfo().phones().mobile() ◎ person.primaryContact() 実装継承 控え目に。もっと控えめに。 パッケージ階層 フラットに。もっとフラットに。
25.
パッケージスコープを好む public 宣言
控え目に。もっと控えめに。 パッケージスコープにできないか? パッケージの依存関係に改善の余地は? import 文 少なく。もっと少なく。 クラスの分割が必要では?(責任の持ちすぎ) パッケージの依存関係の改善の余地は?
26.
役に立つ ドメインオブジェクト
27.
ドメインオブジェクト
設計パターン ユースケースの実装 シンプルなトランザクションスクリプト Policy 基本の Event Repository Transfer Reference (判断) 部品 (出来事) (記録) (通知) (参照) (制約) 日付 予定日 場所 商品種類 単価 部門 地域 形状 数量 ここが 期間 役割 税率 翌月 拠点 育つほど 型式 担当者 楽になる 有効期限 端数 キャンペーン 超重要 ファンダメンタルなオブジェクト
28.
良い名前 小さく作る
ばらばらに
29.
Domain-Driven Design (DDD)
ドメイン駆動設計
Download now