X



C#, C♯, C#相談室 Part97
レス数が900を超えています。1000を超えると表示できなくなるよ。
0861デフォルトの名無しさん ころころ (ワッチョイ 53ae-aesm)
垢版 |
2024/05/12(日) 22:53:33.15ID:oU1NEJC80
ここで聞くのは正しくなかもしれませんが、分かる方がいれば教えてください。
ドメイン駆動設計を勉強中です。エンティティに識別子を持たせる意味が分かりません。
エンティティをインスタンス化するとそれぞれアドレスが異なるインスタンスが生成されると思います。
==演算子やEqualsメソッドで比較するのは参照じゃダメなんでしょうか?
識別子を比較するようにオーバーライドしているのは何故ですか?
0862デフォルトの名無しさん (ワッチョイ 2701-IR/V)
垢版 |
2024/05/12(日) 23:06:12.43ID:13YW9m600
>>861
いろいろ問題あるやろ

例えば本と著者のようにエンティティ動詞を関連付けるとして
識別子じゃなくメモリアドレスで紐づけるの?
メモリアドレスで識別するなら永続化できないし
異なるメモリ空間で実行するプログラムにエンティティを渡せない

データベースのプライマリキーと同じでエンティティの識別には
エンティティの一生涯で変化しない識別子が必要
0863 警備員[Lv.1][新初] (ワッチョイ 53ae-aesm)
垢版 |
2024/05/13(月) 00:07:27.42ID:T0EdOj3i0
>>862
ありがとうございます。何となく分かってきました。
ということは、そのプログラム実行時(永続化する必要が無い)かつ同じメモリ空間かつであれば、アドレスで比較しても問題ないですか?
それとも普通そういった使い方はしないんでしょうか?
0864デフォルトの名無しさん (ワッチョイ 4fda-lgp4)
垢版 |
2024/05/13(月) 00:57:13.99ID:KNVG9kbW0
エンティティをインスタンス化するとアドレスが異なるインスタンスが生成されるのはいいとして、そこから対偶になっていない、
エンティティが同一ならアドレスが等しいという条件を課すとするならば、
アドレスが異なるならばエンティティが異なるということが導かれ、
当たり前だけどエンティティが同一だけどアドレスが異なる状態は許容しないということになるよね
どんな操作をするのにも参照を取り回して同一インスタンスを操作することを徹底できればいいけれど、
気軽にコピーできなくなるということなので、実用アプリケーションの制作において足枷にならないかな?
とりあえずキャッシュがかなりやりにくくなるような気がするけど
0877デフォルトの名無しさん (ワッチョイ 53ff-0yLd)
垢版 |
2024/05/15(水) 12:53:10.60ID:/Mhgjk7F0
思考実験としてはそれなりに面白いお題だった

「メモリアドレスを識別子とするエンティティは果たして存在するのだろうか?存在するならそれは具体的にどういうエンティティなのか?」

もちろんメモリ領域そのものの管理を目的としたエンティティは除いてだけど
0879デフォルトの名無しさん (ブーイモ MMf3-0yLd)
垢版 |
2024/05/15(水) 18:48:28.55ID:FpKtUTMgM
>>878
仮にメモリアドレスを識別子とするエンティティが存在するなら別々のインスタンスが同じエンティティを表すことは当然ないよね

そういうエンティティがありえるのかどうかという問題
0881デフォルトの名無しさん (ブーイモ MM5b-0yLd)
垢版 |
2024/05/15(水) 23:12:27.13ID:s7hy7sHPM
>>880
オブジェクトインスタンスそのものの管理を行うような低レイヤーのソフトウェアで考えた場合、オブジェクトインスタンスそのものが一つのエンティティとなりうるというのはOK?

その場合別インスタンスが同一エンティティを表すことはないよね?

ってことはエンティティの種類によってはそういうこともあるということだとおもうけど
0882デフォルトの名無しさん (ブーイモ MM5b-0yLd)
垢版 |
2024/05/15(水) 23:20:45.90ID:ZskG14vCM
一応書いておくけど
インスタンスやメモリ領域の管理を目的とした場合以外でメモリアドレスを識別子にするのが妥当なケースがあるとは思ってないからね

あくまで普段考えない角度から物事を見て理解を深めるための思考実験
0886デフォルトの名無しさん (ワッチョイ 1b01-lNhc)
垢版 |
2024/05/17(金) 23:18:16.81ID:SQDXRiXC0
ある種の限られたドメインにおいてはメモリアドレスを識別子とするエンティティが(理屈の上では)存在しうることはDDD本のエンティティの項目を読めばわかると思う
ただ現実的にそういう低レイヤーにDDDが適用されるかどうかは別の問題

(以下引用)
Object-oriented languages build “identity” operations into every object (for example, the “==” operator in Java). These operations determine if two references point to the same object by comparing their location in memory or by some other mechanism. In this sense, every object instance has identity. In the domain of, say, creating a Java runtime environment or a technical framework for caching remote objects locally, every object instance may indeed be an ENTITY. But this identity mechanism means very little in other application domains.
0887デフォルトの名無しさん (ワッチョイ eb9c-b4O/)
垢版 |
2024/05/17(金) 23:54:44.95ID:0Qw7AgxQ0
「が妥当」は言いすぎたか

インスタンスやメモリ領域の管理を目的とした場合はメモリアドレスをエンティティの識別子にするの「は」ドメイン駆動設計として妥当である

こうか
0889デフォルトの名無しさん (オイコラミネオ MM49-YREO)
垢版 |
2024/05/18(土) 08:59:29.69ID:uwOjIZn9M
どういうゲームでどこに行きつけばゴールなのか?

既存の枠組みで何も考えないで実装できるから同じルールでやってるだけ
思考実験しなくていいそれが利点

永続化問題、DB使う使わないとか言語がなにかでルール変えてコーディングするのかどうか
考えないでいいと言うことは手間が減る
人材も幅広く取れるし共通概念なので理解してもらいやすい

アドレスはIDと違ってコーディング側では割り振りできない
recordをwithで書き換えたりしたらアドレスでは残念なことになる
普通にそんなことは起こらないだろうけど今後もC#が変わっていったとして同じとは限らない
0901デフォルトの名無しさん (ワッチョイ 17d2-TDJX)
垢版 |
2024/05/22(水) 21:02:34.25ID:fe7cSBQi0
リンQがわからなすぎて、普通にSQL書いてAIに書き直して貰ってるわ
0902デフォルトの名無しさん (アウアウアー Sa06-KdSZ)
垢版 |
2024/05/22(水) 23:26:59.46ID:QDijG+iXa
あれはsqlの結果からさらにsql投げて云々…みたいなことをやりたいときには便利だけどsqlをクエリ構文に置き換えるのを悩む時間が無駄だなぁと思ってしまうし自分も変換してもらってる
commandtextは逆にクエリ一発ぶん投げて終わり以外の用途だと異常にダルい
良い塩梅のやつが欲しい
0903デフォルトの名無しさん (ワッチョイ 63a7-HkEA)
垢版 |
2024/05/22(水) 23:29:40.61ID:rLBYb7w60
同じ感じで正規表現生成してもらおうとしたらイマイチ希望通りにならず粘ってたらむしろ正規表現マスターしてしまったわ
だから今は正規表現からRegexGeneratorと同じ発想でUtf8版のネイティブC#コード生成してもらったりしてる
自然言語→プログラミング言語はまだ微妙だけど人口言語間の変換はかなり正確だからSourceGeneratorは早速お役御免になってしまう気がする
js → C#やprotobuf → C#も修正無しでちゃんと動いたし
0906デフォルトの名無しさん (ワッチョイ 0b0b-LSaA)
垢版 |
2024/05/23(木) 20:59:57.99ID:LosQAR650
そうそう、生成AIの手助けを借りて学べて生成AIよりいい結果を出せるようになったならいいことだと思うけどな
頼り切って成長しないのはどうかなと思うけど。
あれ使うのもコツがいる感じするけどな。普通の人はうまく使えてないよ。
レスを投稿する

レス数が900を超えています。1000を超えると表示できなくなるよ。

ニューススポーツなんでも実況