タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。
Value Objectとは何であるか? マーチン・ファウラーのPatterns of Enterprise Application Architecture(PofEAA)やエヴァンス・エリックのDomain Driven Design: Tackling Complexity in the Heart of Software(DDD)が原典であるが、PofEAAではこう切り出している。 When programming, I often find it's useful to represent things as a compound. プログラミング時は物をcompound(合成物)として表現すると便利なことがしばしばある。 例えば2次元空間上での座標のように複数のメンバ(属性)を持つ物は便利である、と。しかしそれらを比較する方法は一意ではない、そこで Objects that a
Value Object(値オブジェクト)は3種類あった Value Object(値オブジェクト) の意義と使い所がわからなかった。そこで調べてみたらなんと3種類あった。面白かったのでその調査過程を紹介する。 なお、現在では DDD の意味での Value Object がメインであること、またこれは自転車置き場の議論であり、DDD Quickly の Value Object の章を読む方が有意義であることを先に記しておく。 1. Data Transfer Object 1つ目は、Data Transfer Object(DTO)の意味だ。これは PoEAA に少しだけだけ出てくる。かつてのJava界隈の一部では(?)DTOのことを Value Object と呼んでいた。だが、現代では Value Object と DTO は別物として定着している。PoEAA は2000年代前半に
連休の余韻も楽しんだので今日から散歩を再開した。ちょっと前までは「陽の光を浴びなきゃ!」と思って3時過ぎにウロウロしてたけど、これからはもうちょっと涼しい時間帯がいいなと思って、夕暮れ時に散歩しながら fukabori.fm を聴いてた。Value Object のお話。面白いなぁ 73. Value Object w/ kumagi | fukabori.fm kumagi さんの記事はこちら Value Objectについて整理しよう - Software Transactional Memo お絵描き PoEAA や DDD はだいぶ前に読んだことがあるけど、Value Object を雰囲気で捉えてるからちゃんと見直しておこうと思って、調べたりしながら絵を描いた。こういうことなのかな? (絵をかくほどでもなかった・・・ Value Object とは? kumagi さんも書いてる
ドメイン分析とモデル化ここで「モデル化」と呼ぶのは、実装者が理解しやすいように重要な側面に注目して、端的な形に抽象化する行為であると定義します。 また、実際に実務で行なっている自身のモデル化を行う時の書き振りを近しく再現(中身は変更)しているため、わかりづらいかもしれませんが、”実務ではこうやっている” というのを理解していただければ。 先の要件を整理すると、数という概念に金額とポイントという2つのドメインモデルが含まれる。 金額とポイントという異なる概念を計算して最終的に獲得ポイント数を導き出す必要がある。 存在する制約 金額が負の数になることはありえない。ポイントが負の数になることはありえない。金額は日本円のみを考慮し、外貨は存在しない。ポイントは文脈によって呼び名が変わるが、単位は変わらない。支払い金額合計以上にポイント利用数が設定されることはない。金額に小数点は存在しない。ポイント
考えてみればソフトウェアパターンが賑やかだった時代からはすでに20年以上たっているわけで、20年も変わるといろいろ状況も変わりますし、そんな昔のことなんて知ってるわけない、というか知ったことではない、という人も少なくないと思います。 とはいえ今でも使われている用語について、その当時の使われ方を知ると、考察が深まることもあるかもしれません。 そんな感じでOOPとかパターン方面の用語とかを遡りたい! というときには、WikipediaとかではなくてC2 Wikiを見るのがおすすめです。 C2 Wikiとは Wiki(WikiWikiWeb)の元祖みたいなやつですね。iki-ikiで紹介されています。 例えばValue Objectについて掘りたい、と思った時にはValueObjectで探すと見つかります。単語と単語をつなげるときに、単語の先頭を大文字にする感じです。 とはいえ、C2 Wikiも
MP3ファイルをダウンロード 内容紹介 kumagi さんをゲストに、Value Object について語っていただいたエピソードです。 出演者 話したネタ Value Objectについて整理しよう Value Object とは何か? Value Object で複数の値をくるむcompoundの具体例は? Value Object のメリット・デメリットは? 別名参照問題 Value Object は何でないか? YAGNI原則 不変オブジェクト (Immutable Object) 書籍: リファクタリング 既存のコードを安全に改善する(第2版) マーチン・ファウラー氏のblog記事 - ValueObject Value Object Obsession と Primitive Obsession Primitive Obsession のメリットは? Value Objectの
はじめに こんにちは、キャディでバックエンドエンジニアとして働いているkuwana-kbです。 キャディではバックエンドで Rust を採用しています。また、設計手法としてドメイン駆動設計(以下 DDD)を取り入れています。Rust と DDD 、それぞれの解説記事は今では珍しくありませんが、 Rust と DDD をかけ合わせた記事はまだあまり目にしません。 今回は、 Rust で DDD の実装パターンをどう表現するかをまとめたいと思います。DDD に登場する概念は色々とありますが、今回はそのうちの1つである Value Object に焦点をあてたいと思います。 ※ 本記事は、2020/04/28 に開催された「下町.rs」にて kuwana-kb が発表した内容を記事にしたものです。 目次 はじめに 目次 DDD とは DDD の実装パターンを Rust で書いてみた 実装パターン
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Consider Value Objects - Andy Croll 原文公開日: 2019/07/28 著者: Andy Croll ふと気がつくと、アプリケーションで同じようなコンセプトのビューヘルパーをいくつも作ってしまっていることがよくあります(複雑な計算メソッドや、1つ以上の値をいくつものメソッドに渡すなど)。 こんなときは、Active Recordモデルより小規模なシンプルなオブジェクトでその正体を明らかにしてみましょう。 今回の場合は、機能をリファクタリングして、Martin Fowlerが提唱する「Value Object」にすることを検討します。 (Value Objectとは)通貨や日付のrangeのようなシンプルで小さなオブジェクトであり、(オブジェクトの)同一性に頼らずに等価性をチェックする。 mart
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Fighting the primitive obsession with Value objects | Arkency Blog 原文公開日: 2021/05/01 原著者: 原著者: Szymon Fiedler サイト: arkency 週刊Railsウォッチ20210510『Value Objectをクラスで定義してプリミティブな値と戦う』もどうぞ。 参考: Primitive-obsession(基本データ型への執着) - Qiita 前回のRead Modelの記事では別のお題を取り上げましたが、今回はRead Modelそのものに焦点を当てることにし、それ以外については今後の別記事に回したいと思います。ただ、この実装で1つ気に入らない点は、スコアの集計にプリミティブ型(基本データ型)を使っていることです。 Proj
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: The most underused pattern in Ruby | Arkency Blog 原文公開日: 2023/08/31 原著者: Szymon Fiedler 日本語タイトルは内容に即したものにしました。 最近私たちのRailsEventStoreユーザーが、issue #1650を投稿しました。PostGIS拡張を利用しているPostgreSQLデータベースでRailsEventStoreを使いたいが、イベントやストリームで使うテーブルをセットアップするマイグレーションがUnsupportedAdapterで失敗するとのことでした。 これまでRailsEventStoreでは、PostgreSQLアダプタとMySQL2アダプタとSQLiteアダプタをサポートしていました。しかしPostgreSQLでこのPost
はじめに こんにちは。サーバサイドエンジニアの窪田です。 前回の 戦術的DDDをGoで実現する【entity編】 - Yappli Tech Blog に続き、 今回は戦術的DDDにおける、Value ObjectがGoでどのように書けるのかを考えていきます。 例によってTypeScriptとの書き方の違いも一緒に考えていきます。 要件・目指す状態 ドメインルールを表したドメインモデルが定義されている 値の性質を満たした実装がされている という状態を目指します。 書いてみる ドメインモデルを定義する 例えば、ある登録制のサービスでのユーザーネームについて考えます。 そのユーザーネームが 5文字以内でなくてはいけない 半角英数字のみでなくてはいけない というドメインルールがあるとします。 TypeScriptでは以下のように書けます。 class UserName extends Strin
前置き 現場で mybatis を使い始めたのですが、値オブジェクト(Value Object)とマッピングさせる際に少しハマったので整理しました。 環境 Spirng Boot mybatis h2 DataBase SELECT の結果をオブジェクト内の Value Object にマッピングさせる 以下のようなUserNameという Value Object クラスがあったとします。 package com.example.demo.domain.model; public class UserName { private final String value; public UserName(String value) { this.value = value; } public String getValue() { return this.value; } } Userクラスが
DDDにおいて、システムからは更新しないようなマスタデータもentityとしてrepositoryから取得してくるのが望ましいですか? また、マスタデータをDBではなくenumで管理している場合、そのenumをentityとして扱うべきですか? システムにおいてマスタデータを変更する契機が無い場合は可変ではないのでentityではなくvalue objectでしょうか? 一般論で答えますね。 システムから更新しないマスターデータをエンティティとしてリポジトリから取得すること そのマスターデータがビジネスロジックに関わる重要な概念を表現し、ドメインの一部として扱われるべき場合は、エンティティとして扱いリポジトリから取得するのが適切です。ただし、更新されないデータであれば、キャッシュの利用を検討するとよいでしょう 列挙型で管理しているマスターデータをエンティティとして扱うべきか 列挙型で管理さ
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く