並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 35 件 / 35件

新着順 人気順

ValueObjectの検索結果1 - 35 件 / 35件

  • 設計要件をギッチギチに詰めたValueObjectで低凝集クラスを爆殺する - Qiita

    /// <summary>契約金額</summary> public class ContractAmount { public int AmountIncludingTax; public decimal SalesTaxRate; } 当然データの入れ物(以後データクラスと呼称)だけでなく、税込み金額を計算するロジックが必要です。ここであまり設計を考えないと、この手の演算ロジックはデータクラスとは別のクラスに実装されることが多いです。以下のようにControllerに実装されることが多いのではないでしょうか。 /// <summary>契約コントローラー</summary> public class ContractController { private ContractAmount _contractAmount; /// <summary>税込金額を計算する。</summary>

      設計要件をギッチギチに詰めたValueObjectで低凝集クラスを爆殺する - Qiita
    • BirthdayというValueObjectはありなのか?杉本氏(@sugimoto_kei)の考えのまとめ

      たなかこういち @Tanaka9230 BirthdayにasLocalDateとcalcAgeというメソッドを生やすか、getDateとgetAgeというメソッドを生やすか、インターフェースなら、後者の方が本来"正しい"のでしょう。 twitter.com/sugimoto_kei/s… 2019-09-06 22:38:14 杉本啓 @sugimoto_kei 「fisrtNameとlastNameはインスタンス変数として保持されているが、fullNameは保持されていない」という知識を隠すのが情報隠蔽であって、前者と後者を区別したら隠蔽にならないじゃないか。 2019-09-06 21:45:06

        BirthdayというValueObjectはありなのか?杉本氏(@sugimoto_kei)の考えのまとめ
      • neue cc - UnitGenerator - C# 9.0 SourceGeneratorによるValueObjectパターンの自動実装とSourceGenerator実装Tips

        ValueObjectは好きですか?私は大嫌いです。いじょ。 ざっくり言えばプリミティブ型に専用の型を付ける教義です。例えばUserIdをintとして扱っているとTeamIdと取り違えるかもしれないし、Hpに突っ込んでしまうかもしれない。StrengthとIntelligenceとAgilityとSpeedは別物なのだから全部intじゃなくて区別して欲しい、そうじゃないと間違った演算しちゃうぞ、と。まぁそういう自体を避けるために、それぞれラップした個別型を作るのです。int strengthじゃなくてStrength strengthだぞ、と。 これは一見正しく実際正しいのですが、問題もあります。一つに面倒くさい。ラップしたctorを作るのだけでも定形でウザ、と思いますが、更に等値とか実装するのは面倒くさい。また、そのままだと計算できなくなるので、算術演算のために生の値を.Valueで取り

        • .NETでドメイン駆動開発~ValueObject 前編~

          ドメイン駆動開発は業務ロジックをドメインに集中させ、画面やDB、他システムなど業務ロジックとは無関係なものから完全に切り離す設計・開発手法である。また、要件定義から基本設計、詳細設計、実装に至るまで同一のモデリング結果を用いることによって様々なメリットを享受しようとする手法でもあり、近年とても注目度の高い設計・開発手法だ。この記事ではドメイン駆動設計のパターンの一つとして紹介されているValueObjectについて.NETでの実装例をご紹介したい。 もちろん、アプリケーション全体でドメイン駆動設計・開発を行わなければメリットをフルに享受することはできないのだが、ドメイン駆動設計・開発へ興味を持っていただくための取っ掛かりとして、比較的理解しやすく導入しやすいValueObjectを取り上げてみたいと思う。ドメイン駆動開発に少しでも興味を持っていただけると幸いである。 さて、まずValueO

            .NETでドメイン駆動開発~ValueObject 前編~
          • .NETでドメイン駆動開発~ValueObject後編~

            であった。詳しくは前編を参照願いたい。 さて、ではValueObjectとして実装する例として「期間」を取り上げてみよう。データとして「期間」を取り扱う場合、通常開始と終了があり、場合によっては時刻単位まで考慮することもある。ここでは時刻は考慮せず、日付単位で開始日、終了日が設定されている「期間」をValueObjectとして実装してみるとしよう。クラス名はDateRangeとした。 1: public class DateRange 2: { 3:     public DateRange(DateTime startDate, DateTime endDate)        // コンストラクタでのみデータを受け取る 4:     { 5:         this._startDate = startDate; 6:         this._endDate = endDate;

              .NETでドメイン駆動開発~ValueObject後編~
            • ザ・ケイのカミカゼアーキテクチャ:ValueObjectとDTOって何が違うの?

              2010年03月01日 ValueObjectとDTOって何が違うの? ValueObjectとDTO アプリケーションレイヤー(アーキテクトの階層)の疎密度を限りなく疎にしようと考えた場合、レイヤー間の伝達は"構造をもった値"のやり取りが最適です。構造を持った値と言えばDTO(Data Transfer Object)が一般的かと思うが、たまにValueObjectなる言葉が浮上する。その違いについて今日は語ってみる。 構造を持った値 具体的に書くとこうだ。 [Serializable] public class CustomerDTO { public string Id { get; set; } public string Name { get; set; } } なんてことない、値を保持する為だけのクラスです。 DTO 上のコードはまさにDTOなんですが、値をまとめて受け渡すこと

              • 続、BirthdayというValueObjectはありなのか?

                杉本啓 @sugimoto_kei @Tanaka9230 Ageという値クラスを設ける理由が(年齢計算以外に)存在するからAgeを作る。そのうえで Ageのファクトリーメソッドに年齢計算をやらせる。ということでしたら賛成です。年齢計算をやらせるためにAgeという値クラスを作る、のなら反対です。コードの字面(じづら)ではなく、目的適合性の話なんです。 2019-09-09 09:29:58

                  続、BirthdayというValueObjectはありなのか?
                • DDD に入門するなら、まずは ValueObject だけでもいいんじゃない? - Qiita

                  今日は 『ドメイン駆動設計#1 Advent Calendar 2019』の 11日目 です。 昨日は mejileben さんの 『Laravelでドメイン駆動設計を実践し、Eloquent Model依存の設計から脱却する』 でした。 みなさん初めまして、こんばんは! C# をこよなく愛する静岡エンジニアの t2-kob です。 本日のテーマは、 「DDD に入門するなら、まずは ValueObject だけでもいいんじゃない?」 です。 ■ なぜこの記事を書いたか? ・理由の1つ目は、勉強のためアウトプットしたいと思ったからです。 最近 DDD コミュニティの DDD-Comunity-jp(Discord) に参加して、色々なオンライン勉強会に参加させて頂いています。 この勉強会へは色々下調べして臨んでいますが、その後の振り返りが出来ていませんでした。 このため、勉強を兼ねてアウト

                    DDD に入門するなら、まずは ValueObject だけでもいいんじゃない? - Qiita
                  • goでValueObject(値オブジェクト) を実装する - 電通総研 テックブログ

                    これは電通国際情報サービス アドベントカレンダーの17日目の記事です。 はじめに 開発環境 ValueObject(値オブジェクト)とは? 実装方針のアプローチ 構造体として実装し、フィールドに値を保持し、必要な機能をメソッドで外部公開する defined typeとして実装し、必要な機能をメソッドで外部公開する 両アプローチの考察 データベースへの永続化 Value関数 Scan関数 実際にRDBに永続化してみる 値オブジェクトの実装 DB永続化処理 終わりに はじめに みなさんこんにちは。電通国際情報サービス(ISID) 金融ソリューション事業部の水野です。 今回は、値オブジェクトをgo言語でどのように実装したかをご紹介します。 値の生成から振る舞いの実装、データベースへの永続化の際に如何に透過的に扱うかまでを見ていきます。 開発環境 Visual Studio Code 1.62.2

                      goでValueObject(値オブジェクト) を実装する - 電通総研 テックブログ
                    • Symfony/Doctrineでちょっと複雑なValueObjectを扱う例 | QUARTETCOM TECH BLOG

                      はじめに 前回の記事では、Symfony 3.2で継承関係のあるエンティティをDoctrineのSingle Table Inheritanceを使って実装し、テスト時にYAMLのフィクスチャとしてエンティティのテストデータを用意するサンプルを紹介しました。 前回の記事の時点でのエンティティクラスは、下図のようになっています。 今回は、配送時期種別を種別(即納 Instant と見積 Estimation)それぞれ別のクラスにします。アプリケーションコード側ではこれらのクラスのインスタンスで扱い、DBにはこれまで通り文字列で保存を行います。この変換にDoctrineのEntityListenerを使います。クラスは以下のように変わります。 実装を行ったバージョンのソースコードは、以下から参照してください。 GitHubリポジトリ 利用バージョン 記事執筆時点では、以下のバージョンになってい

                        Symfony/Doctrineでちょっと複雑なValueObjectを扱う例 | QUARTETCOM TECH BLOG
                      • APIKitでRequestのイニシャライザに渡すのはValueObjectやEntityじゃないほうが良い - Qiita

                        はじめに iOSアプリ開発のために、APIKit(もしくはインターフェースをAPIKitふうにしたもの)を利用していると、コードレビューの際に他人の使い方を見ることがあって、そういうときにAPIKitの使い方について人に指摘することがあったのでそれを書いておく。 Requestのイニシャライザに渡すのはValueObjectやEntityじゃないほうがいい APIKitのようなやり方の良さの一つとして、リクエストとレスポンスが何らかのWebAPIドキュメントと見比べたときに明確さがあるということだと思う。 それで大抵の場合、必要なパラメータをイニシャライザで渡すことになるけど、そのイニシャライザでは自作のValueObjectやEntityを渡すのではなく、StringやBool, NSNumberなんかのほうがいいですよという話。 (本記事のコメント欄から、自作のValueObjectや

                          APIKitでRequestのイニシャライザに渡すのはValueObjectやEntityじゃないほうが良い - Qiita
                        • ValueObjectという考え方 - Qiita

                          以前、DDD(ドメイン駆動開発)を経験した流れでいくつかのことを学びました その中でDDDの神髄を垣間見たのでかいつまんで紹介できればと思います 記事のターゲット DDDを学び始めた人 値オブジェクト・ValueObjectとはなにか、その片鱗を知りたい人 Value Objectとは 値オブジェクトとしてエリック本(青本)では紹介していますね Value Objectの特徴 特徴として以下のような内容があります 一意性を持たない 計測/定量化/説明を責務とする イミュータブルオブジェクト 交換可能 ふるまいに副作用がない 一意性を持たない オブジェクト毎に hogehoge_id のような一意性を表現するプロパティを含まず、一意性がない特徴です 逆にIDを持つようなオブジェクトは「Entity」といいます この特徴の意味するところはオブジェクトをプリミティブライクに扱えることだと考えられ

                            ValueObjectという考え方 - Qiita
                          • DDD基礎解説:Entity、ValueObjectってなんなんだ - Qiita

                            はじめに DDDの実装パターンとして、EntityとValueObjectというものがあります。 ドメイン駆動一般に複雑な抽象論が多い中で、コードに近く一番イメージがつきやすいコード事例として出てくるため、ここだけは何となくわかるぞ!という方もいらっしゃるのではないでしょうか。 今日はこちらの概要とそれぞれの使い道について書きたいと思います。 先にざっくりイメージ図をお伝えすると、こういう図を使って解説します。 何の目的で作るのか? ドメイン駆動設計は何を解決しようとしているのか こちらの記事で、ドメイン駆動設計のアプローチはは以下の2ステップがあるということを書きました。 ドメイン(ソフトウェア化対象の世界)に対して、システムで使うためのモデルを作成する モデルをソフトウェア(コード)に落とし込む DDDでは、このStep2の モデルをコードで表現するためのパターン として、以下の4つを

                              DDD基礎解説:Entity、ValueObjectってなんなんだ - Qiita
                            • ValueObject implementation in Python - Qiita

                              I searched for Value object implementation in Python, and found keleshev's implementation in github. But it doesn't provide the feature of immutability of Value object. So, I implemented property based immutable Value object class by myself. explicit property definition value based comparison, including hash Any feedbacks are welcome. ValueObject class class ValueObject(object): """ base class for

                                ValueObject implementation in Python - Qiita
                              • またまたValueObject、そしていよいよRoleについて

                                杉本啓 @sugimoto_kei 配賦計算やら外貨換算など計算処理が主題になる場合、Allocator とか CurrencyTranslator といった動詞的オブジェクトを作ることに、僕はあまり抵抗がない。配賦計算は、配賦される金額に属する訳ではないし、配賦割合に属する訳でもないと思うから。こういうのを嫌う人は多いのかな。 2019-10-12 18:57:11 杉本啓 @sugimoto_kei 配賦計算というコンテキストがあって、配賦対象金額や配賦率といった概念が生まれるのであって、その逆ではないと思うのな。DCI的に言えば配賦金額や配賦率は配賦計算というインタラクションにおけるロール。固有の振る舞いがあればそれを金額等に注入してもいいけど、そこまでする必要もないと思う。 2019-10-12 19:02:15

                                  またまたValueObject、そしていよいよRoleについて
                                • ParamHelperにPSR-7とValueObject の力を授けた話 - pixiv inside

                                  こんにちは、VTuberとPHP をこよなく愛しているふじしゃんです。 去年の7月からpixiv運営本部 Webエンジニアリングチームでアルバイトをしています。 今回は、pixivのParamHelperにPSR-7とValueObjectの力を授けたRequestParamFilterをピクシブ百科事典に実装した話を書いていきます。 ParamHelper について これまでピクシブ百科事典には、リクエストパラメータやリクエストボディを厳密に検証する仕組みがありませんでした。 Webアプリケーションにとって入力値検証は非常に重要なことです。 pixivでは、受け取った値を安全に扱うためにParamHelperという機能を実装し、必ず検証するようにしています。 以下のように書くことで値を検証しPHPStanで型付けを行うことができます。 <?php $page = ParamHelper:

                                    ParamHelperにPSR-7とValueObject の力を授けた話 - pixiv inside
                                  • 【DDD】C# EntityFramework CoreでValueObjectをマップする方法

                                    ドメイン駆動設計(DDD)のValueObject(値オブジェクト)をEntityFramework Core(EFCore)で自動的にマッピングする方法を紹介します。 EFCore2.0以降では、所有エンティティ型としてValueObjectを永続化する機能が提供されています。 マッピングだけではなく、ValueObjectとして定義したEntityからマイグレーションを生成することも可能です。 EntityとValueObjectを定義する 注文Orderと配送先住所Addressの場合の各クラスを以下のように定義します。 配送先住所に含まれる郵便番号、都道府県、住所等をValueObjectとして定義しています。 クラス図 Order (Entity) using System; using System.Collections.Generic; using System.Linq;

                                      【DDD】C# EntityFramework CoreでValueObjectをマップする方法
                                    • t_yano on Twitter: "SQLなあ。500行のSQLとかは今や論外であるのはいいとして、俺は多くの人がSQL(というか集合データ)に抱えてる不満って、テーブルをジョインしたら既存のエンティティにマッピングできなくて専用のValueObjectをたくさん作… https://t.co/EuvhwVtsU0"

                                      SQLなあ。500行のSQLとかは今や論外であるのはいいとして、俺は多くの人がSQL(というか集合データ)に抱えてる不満って、テーブルをジョインしたら既存のエンティティにマッピングできなくて専用のValueObjectをたくさん作… https://t.co/EuvhwVtsU0

                                        t_yano on Twitter: "SQLなあ。500行のSQLとかは今や論外であるのはいいとして、俺は多くの人がSQL(というか集合データ)に抱えてる不満って、テーブルをジョインしたら既存のエンティティにマッピングできなくて専用のValueObjectをたくさん作… https://t.co/EuvhwVtsU0"
                                      • 「PHPで列挙型(enum)を作る」を参考にValueObjectを作ったので一つ一つのメソッドの役割や意味をまとめてみた - Qiita

                                        「PHPで列挙型(enum)を作る」を参考にValueObjectを作ったので一つ一つのメソッドの役割や意味をまとめてみたPHPDDDenumマジックメソッドValueObject 前提 PHPでEnum型を作りたくて以下の記事を参考にした。 (記事の方ではなく、コメントに追記されている方のコードを利用) https://qiita.com/Hiraku/items/71e385b56dcaa37629fe ただ、コピペ芸人になりたくなかったので、 Enumクラスで使われているメソッドが何をしているのか、 一つ一つ自分なりに解釈してみたのでここにメモ。 コード 上記記事にあるコードを参考に自分が使う形に修正した。 予約のステータスを表すクラス。 このStatusクラス(ValueObject)は別途定義したReservationクラス(Entity)のプロパティとして定義している前提。 /

                                          「PHPで列挙型(enum)を作る」を参考にValueObjectを作ったので一つ一つのメソッドの役割や意味をまとめてみた - Qiita
                                        • DDD に入門するなら、まずは ValueObject だけでもいいんじゃない? - Qiita

                                          今日は 『ドメイン駆動設計#1 Advent Calendar 2019』の 11日目 です。 昨日は mejileben さんの 『Laravelでドメイン駆動設計を実践し、Eloquent Model依存の設計から脱却する』 でした。 みなさん初めまして、こんばんは! C# をこよなく愛する静岡エンジニアの t2-kob です。 本日のテーマは、 「DDD に入門するなら、まずは ValueObject だけでもいいんじゃない?」 です。 ■ なぜこの記事を書いたか? ・理由の1つ目は、勉強のためアウトプットしたいと思ったからです。 最近 DDD コミュニティの DDD-Comunity-jp(Discord) に参加して、色々なオンライン勉強会に参加させて頂いています。 この勉強会へは色々下調べして臨んでいますが、その後の振り返りが出来ていませんでした。 このため、勉強を兼ねてアウト

                                            DDD に入門するなら、まずは ValueObject だけでもいいんじゃない? - Qiita
                                          • PHPでValueObjectを実装してみる - はむはむエンジニアぶろぐ

                                            ValueObjectは、getterしかないオブジェクトです。 getterしか無いって何が嬉しいの?って感じかもしれませんが、特定の概念を説明する集合体として表現できます。 ようは、コードに概念の集合を語らせることが出来ます。 簡単なパターンなので、覚えることも少ないです。 ですが、Valueobjectを覚えることで表現力を向上することが出来ると思います。 今回、PHPで実装してみました。 ValueObjectとは? コンストラクタで、オブジェクトの生成時のみ値をセットできるオブジェクトです。 オブジェクトの生成時のみというのがミソで、それ以降は値を変更することは出来ません。 つまり、イミュータブルであることを担保できる。 例えば、連想配列とかだといつでもどこでも中身を書き換えられる。 それは、デバッグする時に困難になる。 その連想配列のライフサイクルを全てチェックせねばならない。

                                              PHPでValueObjectを実装してみる - はむはむエンジニアぶろぐ
                                            • 【ドメイン駆動設計】ValueObjectサンプルコード:プリミティブなオブジェクトみたいに振る舞う - Qiita

                                              はじめに DDD(ドメイン駆動開発)に登場するValueObjectをRubyで実装しようとして コードを書き進めると、プリミティブっぽく振る舞うようにするにはどうすれば良いんだっけ? と悩むシーンがあったので どんなメソッドを実装しておくと便利になるのか、サンプルにまとめてみました。 (ValueObject自体の説明はここでは割愛させていただきます) ValueObjectの特徴 ValueObjectを実現するには、次の特徴を実装しなければなりません。 値は不変(後から変更できない) 値が同じなら同一オブジェクトと判断 (単一の値よりも複数の値をひとかたまり(合成物)として扱う方がより効果的) 他にもIntegerやStringなどのプリミティブなオブジェクトと同じような特徴を備えていると便利です。 比較演算子で比較できる 配列に入れてソートできる ハッシュのキーにできる 範囲(Ra

                                                【ドメイン駆動設計】ValueObjectサンプルコード:プリミティブなオブジェクトみたいに振る舞う - Qiita
                                              • DDDのValueObjectをCSVから一括生成する「UnitGeneratorTemplate」をリリースしました

                                                私はValueObject好きなんですが、でも実装って案外面倒ですよね。 recordが登場してだいぶ楽になりましたが、それでも不十分な側面が多くあります。 それらの課題を解決してくれるライブラリーとしてUnitGeneratorがあります。 非常によくできていて痒い所に手が届くのですが、それで大量に作ると大変です・・・ というわけで、CSVに設定を定義すると一括生成してくれるテンプレートライブラリー「UnitGeneratorTemplate」をリリースしました! Github NuGet UnitGenerator UnitGeneratorTemplateはCSVに設定を記載することで、UnitGeneratorを利用したValue Objectを一括で自動生成するためのテンプレートパッケージです。 T4テンプレートとCSVを利用して、任意のUnitを一括で作成できます。 Getti

                                                  DDDのValueObjectをCSVから一括生成する「UnitGeneratorTemplate」をリリースしました
                                                • ValueObjectのすゝめ - asoview! Tech Blog

                                                  ValueObjectのすゝめ Photo by bruce mars on Unsplash アソビュー Advent Calendar 2020の16日目です。 こんにちは、今年1月に入社したサーバーサイドエンジニアの頭島です。 テーマ 今回は、ドメイン駆動設計(以下DDD)の技術的アプローチのひとつでもあるValueObjectについて紹介させていただきたいと思います。私自身アソビューで1年間DDDをやってきて今では空気を吸うようにValueObjectを作っていますが、改めて導入のしやすさと恩恵を感じます。既存のソフトウェアにも導入しやすいので、さくっと導入して恩恵を感じてみましょう!といったテーマになります。 アソビューにおけるDDD アソビューでは、DDDを導入しています💡過去には技術顧問としてドメイン駆動設計で有名な増田 亨(@masuda220)氏を迎えたこともあり、日頃

                                                    ValueObjectのすゝめ - asoview! Tech Blog
                                                  • ValueObjectのススメ

                                                    こちらはKyash Advent Calendar 2023の22日目の記事です。 Kyashでサーバサイドの開発をしているdevkonoです。 この記事はドメイン駆動開発で良く利用されるValue Objectの特性について言語化し、最後に「Value Objectはいいぞ」とオススメするために書かれたものです。 今回は主にKyashでも広く利用されているGo言語を例にして記載します。 「Entityには振る舞いを持たせるのに、なぜEntityの中の項目自体には振る舞いを持たせないのか?」 と、考えたことはないでしょうか? 一般的によく見かけるドメインエンティティオブジェクト(Value Objectを利用しない) Entityに振る舞いを持たせることは一般的に広く行われています。 以下にGo言語で実装された振る舞いを持たせたEntityを示します。 package sample imp

                                                      ValueObjectのススメ
                                                    • RubyでValueObjectを作るベストなやり方を考えてみた - Qiita

                                                      module ValueObjectable def initialize(args) super(args) freeze end end class Location < Struct.new(:country, :city, keyword_init: true) include ValueObjectable end ## 特徴 ## # 1. OpenStructのように Hash で初期化できる tokyo = Location.new(country: 'Japan', city: 'Tokyo') => #<struct Location country="Japan", city="Tokyo"> # 2. 比較演算ロジックを自前で定義しないでいい fukuoka = Location.new(country: 'Japan', city: 'Fukuoka') toky

                                                        RubyでValueObjectを作るベストなやり方を考えてみた - Qiita
                                                      • TypescriptでValueObjectを自動生成する - ts-vo-generator -

                                                        はじめに ValueObject作るのめんどくね。 DDDを学習してプロダクト開発をしたことがある人なら多くの人が考えたことがあるであろうValueObjectを全部作るのか、一部作るのか、全く作らないのか。 私もメンバーと議論したことがあるのですが、開発チーム内でValueObjectを作る基準が誰が見ても明確な場合はいいですが、新しくメンバーが増えたりパートナーさんを入れたりした場合には判断基準が合間になっていきだんだんと一貫性のないコードになってしまう恐れがあります。 しかしValueObjectをいちいち全部定義するのもめんどくさい、 そんな時のためにTypescriptのConstructorからValueObjectのスケルトンコードを自動で生成するライブラリを作りました。 ts-vo-generator type MountainType = { id: number; na

                                                          TypescriptでValueObjectを自動生成する - ts-vo-generator -
                                                        • 設計 valueobject イミュータブル c# - Google 検索

                                                          2019/11/09 · immutable(不変)にする. 内部のインスタンス変数が変更可能な状態にあると、並列処理などにおいていつの間にか値がすり替わっているなど意図しない ...

                                                          • ValueObject 爆殺 - Google 検索

                                                            2019/11/09 · 金額ならば加算や減算だけなど、業務概念的に許可された操作だけをメソッドとして公開することで、不正な演算を許さない、頑強な設計となります。 この ...

                                                            • 設計要件をギッチギチに詰めたValueObjectで低凝集クラスを爆殺する - Qiita

                                                              /// <summary>契約金額</summary> public class ContractAmount { public int AmountIncludingTax; public decimal SalesTaxRate; } 当然データの入れ物(以後データクラスと呼称)だけでなく、税込み金額を計算するロジックが必要です。ここであまり設計を考えないと、この手の演算ロジックはデータクラスとは別のクラスに実装されることが多いです。以下のようにControllerに実装されることが多いのではないでしょうか。 /// <summary>契約コントローラー</summary> public class ContractController { private ContractAmount _contractAmount; /// <summary>税込金額を計算する。</summary>

                                                                設計要件をギッチギチに詰めたValueObjectで低凝集クラスを爆殺する - Qiita
                                                              • [Symfony] DoctrineのCustom Mapping Typesを使って文字列の拡張型っぽいValueObjectを扱う

                                                                Symfonyで業務システムを作っていたら、事業年度 と 四半期 というドメインモデルが出てきました。 例えば、「2021年度」という 事業年度 は 2021年度 という文字列表現 2021/4/1〜2022/3/31 という期間情報 を持ち、「2021年度第4四半期」という 四半期 は 2021年度第4四半期 という文字列表現 2022/1/1〜2022/3/31 という期間情報 を持つ、というような要件です。 このドメインモデルをコードに落とし込む際にやり方をいくつか検討したのですが、最終的に 期間情報を取り出すメソッドを持ったValueObjectとして表現し Doctrineの Custom Mapping Types を使って文字列の拡張型っぽく保存する というアプローチで割とスッキリと表現することができたので、その共有です✋ 事業年度 も 四半期 も期間計算のロジックが多少違う

                                                                  [Symfony] DoctrineのCustom Mapping Typesを使って文字列の拡張型っぽいValueObjectを扱う
                                                                • メソッドがあると便利な値を探してValueObjectにしよう - Qiita

                                                                  ドメイン駆動設計について調べていると、データベースのカラム全部にValueObjectを作っちゃった話とか、値を入れるだけでメソッドが一つもないValueObjectを作っちゃった話とかたまに見かけます。 こういうのは、ValueObjectの「不変で交換可能で値として等価で〜」という定義に意識がむきすぎちゃった結果なのかなと思います。 そういう定義はわきに置いて、「メソッドがあると便利な値ってないかな?」という発想の方が本当に必要なValueObjectを見つけられるんじゃないかな、というのがこのエントリで言いたいことです。 ValueObjectのパターン 本題に入る前に、どんなメソッドがあると便利かわかっているとValueObjectを見つけやすいので、そちらについて話します。 私が見つけているValueObjectのパターンは4つあります。 ラッパーValueObject 計算可能

                                                                    メソッドがあると便利な値を探してValueObjectにしよう - Qiita
                                                                  • LLDBで変数の値が見れない"error: Couldn't materialize struct: size of variable print_string disagrees with the ValueObject's size Errored out in Execute, couldn't PrepareToExecuteJITExpression" - 日々精進

                                                                    LLDBで変数の値を見ようとすると、以下のようなエラーメッセージが出た。 error: Couldn't materialize struct: size of variable print_string disagrees with the ValueObject's size Errored out in Execute, couldn't PrepareToExecuteJITExpressionこれは最適化レベルが高いことが原因。Build Settings>Optimization LevelをNoneにすると見られるようになった。

                                                                      LLDBで変数の値が見れない"error: Couldn't materialize struct: size of variable print_string disagrees with the ValueObject's size Errored out in Execute, couldn't PrepareToExecuteJITExpression" - 日々精進
                                                                    • 【C#】ValueObject作成時のGetHashCode()のオーバーライドの実装方法 - Qiita

                                                                      前提知識(知っている方はスキップ推奨) そもそもValueObjectって何? ざっくりいうと、システム固有のオブジェクト(独自型)です。 値が持つビジネスルールを表現することができます。 詳しくはググってみてください。 そもそもハッシュ関数って何? 入力されたデータを"何らかの値"にして返却する関数です。 "何らかの値"を生成するときは、ある一定のルールに従って行われます。 したがって、同じ値をハッシュ関数に与えると、同じ値が返却されます。 尚、ハッシュ関数が返却する値をハッシュ値と言います。 ValueObjectが単一の値しか持たない場合 プロパティに対してGetHashCode()をするだけでOKです。 public class Id { public int Value { get; set;} // ...略 public override int GetHashCode()

                                                                        【C#】ValueObject作成時のGetHashCode()のオーバーライドの実装方法 - Qiita
                                                                      • Spring Webの@PathVariableキャプチャ値をValueObjectにマッピングする

                                                                        Spring Webで同じPathVariableを受け取るエンドポイントがいくつか出てきたので、Validationを共通化したいなーみたいな気持ちになった。てのと、ValueObjectへの変換メソッドもそこに持たせちゃいたいなみたいな気持ちになった。 なので取りあえずDTO作ってそこにValidation定義してみた。 public record PetIdDto( @Min(value = PetId.MIN_VALUE, message = "petIdには{value}以上の整数を指定してください。") @Max(value = PetId.MAX_VALUE, message = "petIdには{value}以下の整数を指定してください。") @Digits(integer = PetId.MAX_DIGIT, fraction = petId.FRACTION_DIGIT

                                                                          Spring Webの@PathVariableキャプチャ値をValueObjectにマッピングする
                                                                        1