TypeScript part4 (376レス)
TypeScript part4 http://mevius.5ch.net/test/read.cgi/tech/1640872622/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
26: デフォルトの名無しさん [sage] 2022/02/06(日) 19:18:05.78 ID:7lkHt7VO >>24 つーか「影響を与える」と私が一言でも書いたかな? 君のレスでは影響を与えるって言葉を変化させるという意味で使ってるように読める だが私はイミュータブルオブジェクトを元にイミュータブルオブジェクトを「生成する」としか書いてない modifyとcreateはプログラミングにおいて全く異なる概念なので明確に区別することをおすすめする PODなら間違ったデータを簡単に渡せる IO境界だけでバリデーションすればいいという考え方は人間を信用しすぎている 人間は間違えるという前提を忘れてはいけないよ 百点満点のコードを確実に書けると確信できるようなちっぽけなシステムではそれでなんとかなるかもしれないけどね http://mevius.5ch.net/test/read.cgi/tech/1640872622/26
27: デフォルトの名無しさん [sage] 2022/02/06(日) 19:28:15.98 ID:Fo3XpFx5 >>26 イミュータブルがイミュータブルなままなら問題ないって話しかしてないよ? > 人間は間違える そのためのTypeScriptのstructだよ? http://mevius.5ch.net/test/read.cgi/tech/1640872622/27
28: デフォルトの名無しさん [sage] 2022/02/06(日) 19:34:50.15 ID:7lkHt7VO >>25 今はなっている?ないないなってない 適当なことを言わんでくれ JSONやXMLやバイトストリームやフォームデータのような外界の都合を吸収してシステムが扱いやすい形式に変換する(あるいはその逆の流れ)はドメイン層の仕事じゃない それは外界とやり取りをするための専門の層の仕事だ http://mevius.5ch.net/test/read.cgi/tech/1640872622/28
29: デフォルトの名無しさん [sage] 2022/02/06(日) 19:39:52.33 ID:7lkHt7VO >>27 structだけじゃ人間は間違えるし問題あるって話をしてる structではデータ型が合ってるところまでしか保証できない インスタンスが抱えてるデータが満たすべき条件を満たしていることを保証できるか?そこがポイント それを保証するにはstructでは不十分で完全コンストラクタを実装したクラスが不可欠 http://mevius.5ch.net/test/read.cgi/tech/1640872622/29
30: デフォルトの名無しさん [sage] 2022/02/06(日) 20:00:52.90 ID:Fo3XpFx5 >>29 だからデータの入り口で型バリデーションするんだよ。 君は前スレの最後で暴れてた型バリデーションできない人だったか。話が通じないわけだ。 http://mevius.5ch.net/test/read.cgi/tech/1640872622/30
31: デフォルトの名無しさん [sage] 2022/02/06(日) 20:04:35.10 ID:+4OSlPdc >>30 だからそれじゃバリデーション箇所が多すぎて手が回らんっての 話がループしてるよ http://mevius.5ch.net/test/read.cgi/tech/1640872622/31
32: デフォルトの名無しさん [sage] 2022/02/06(日) 20:06:04.45 ID:Fo3XpFx5 >>31 だからIOとかfetchみたいなデータの入り口だけなんだよ? http://mevius.5ch.net/test/read.cgi/tech/1640872622/32
33: デフォルトの名無しさん [sage] 2022/02/06(日) 20:12:58.65 ID:W5e759ag >>32 またループしてる そこだけバリデーションしても人間のミスはカバーしきれない 規模の小さなシステムならなんとかなるかもしれないが大きなシステムでは絶対無理 これ以上は無限ループして時間の無駄っぽいね http://mevius.5ch.net/test/read.cgi/tech/1640872622/33
34: デフォルトの名無しさん [sage] 2022/02/06(日) 20:14:05.76 ID:Fo3XpFx5 >>33 そうだね。止めてもいいよ。 http://mevius.5ch.net/test/read.cgi/tech/1640872622/34
35: デフォルトの名無しさん [sage] 2022/02/06(日) 20:51:55.71 ID:AuLf6V7C >>28 toJSONを呼ぶのはI/O層の仕事で、 toJSONを定義するのはドメイン層の仕事だよ。 つか、そうじゃないと無理なんだよ。 JSONでは対応出来ない型があるから、何が入っているか分からない状態ではシリアライズは出来ない。 逆に言えば何でもシリアライズ出来れば全部I/O側に任せる事は出来るのだが、 現時点で現実的にこれはバイトストリームしかないから、バイナリデータでメモリダンプ形式で良ければ出来るけど、 これはJSONともXMLとも言わないし、実際これをやってるシステムは今は無いでしょ。 http://mevius.5ch.net/test/read.cgi/tech/1640872622/35
36: デフォルトの名無しさん [sage] 2022/02/06(日) 21:05:05.78 ID:Y8lZmwFL >>35 ん?別の人か? ドメイン側が提供するのは属性の読み取りアクセスと同等の引数を受け取る完全コンストラクタオーバーロードだけ 読み取った属性を外界が要求する形式に整形、シリアライズする(あるいはその逆)のはIO層の仕事 どの外界とどんな形式でやり取りするのか? ドメイン層はそんなことは知らないし知ってはいけない だから外界に依存しない純粋な読み取り属性とコンストラクタでIO層と連携する IO層はそのデータをどうすべきか全て知っている http://mevius.5ch.net/test/read.cgi/tech/1640872622/36
37: デフォルトの名無しさん [sage] 2022/02/06(日) 21:14:45.88 ID:AuLf6V7C >>36 まあそれでも出来るけど、それが面倒で二度手間で意味無いからみんなPODを使ってるんだと思うぞ。 FizzBuzzEnterpriseEditionとか、君は本気でやりそうだね。 https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition http://mevius.5ch.net/test/read.cgi/tech/1640872622/37
38: デフォルトの名無しさん [sage] 2022/02/06(日) 21:24:14.91 ID:Fo3XpFx5 >>37 なんだこれww http://mevius.5ch.net/test/read.cgi/tech/1640872622/38
39: デフォルトの名無しさん [sage] 2022/02/06(日) 21:25:43.66 ID:7lkHt7VO >>37 君も話がループしてるね 面倒だからPODで済ませるで通じるちっぽけな規模ならそれでいいんだよ私は一貫してそこは否定してないでしょ? それなりに規模が大きくなった時の話をしてんの FizzBuzzをエンタープライズの手法で作るのが馬鹿馬鹿しいのと同じように エンタープライズのシステムをFizzBuzzを書くようなノリで作るのも馬鹿馬鹿しいってこと http://mevius.5ch.net/test/read.cgi/tech/1640872622/39
40: デフォルトの名無しさん [sage] 2022/02/06(日) 21:33:21.13 ID:7lkHt7VO >>35 ちなみにバイナリでシリアライズするのはprotocol buffersとか普通にあるよ で、どんな形式で通信すんの?JSON?バイナリ?XML?CSV? そんなのはドメイン側は知りたくない絶対に知りたくない ドメイン側がシリアライズの責務を負ってしまったらじゃあ通信の形式が増えるたびにドメイン側を拡張するのか? そんなのドメイン側の本質とは全く関係ない通信様式の問題なのに? http://mevius.5ch.net/test/read.cgi/tech/1640872622/40
41: デフォルトの名無しさん [sage] 2022/02/06(日) 22:02:56.26 ID:AuLf6V7C >>40 JavaScriptといえばJSON以外無い。 そしてXMLもDOMParserでどうにでもなる。 通信形式をドメイン側と分離するべきなのは「あらゆる形式に対応する」大前提でだ。 今時JSONかXMLしかないし、実際これで事足りるからみんなこれを使ってる。 密結合が駄目なのは「変更される可能性がある箇所」であって、何でもかんでも分離すればいいというものではない。 疎結合にすれば結局間接参照を中に挟むから、実行効率もコード効率も落ちるだけ。 Protocol Buffers見てみたが、ぶっちゃけこれ誰も使ってないだろ。 JSに対応してない時点で今現在のコンピューティングとかけ離れている。 現在もJSONで揺るぎないし、今後もJSONがさらに蔓延る雰囲気だ。 なら、ドメイン側がJSON形式に依存しても全く問題ないんだよ。 そこを無理矢理分離して、分離する意味の無いところも含めてあらゆる分離を行ってるのがFizzBuzzEnterpriseEdition。 君が言ってるのはこれ。 勿論、JSONが廃れればドメイン側のコードを書き換える必要が発生するけど、これは多分あり得ない未来なんだよ。 それでもこれに備えたければ備えるのも自由だけど.。 尚一応言っておくがJSONはJavaScriptObjectNotationの略で、つまりJSネイティブ形式だ。 だからPython等の他言語がJSON依存を避けるのならまだ分かるが、TS/JSで避ける意味はない。 君は完全にFizzBuzzEnterpriseEditionのノリでプログラミングをしてる。 http://mevius.5ch.net/test/read.cgi/tech/1640872622/41
42: デフォルトの名無しさん [sage] 2022/02/06(日) 22:16:09.49 ID:jR6D7dXS PODがダメなら普通にclassを使えばいいじゃない その class に完全コントスクラタと toJSON を実装すればいい つか贅沢言いすぎや TSほどJSON API と神話性高く、堅く書けて、ほどよく柔軟な言語ないで ワイはバックエンドをGoで書かされているが、言語機能の貧弱さに発狂しそうや 爆速でコンパイルできても爆裂バグだらけじゃ話にならん http://mevius.5ch.net/test/read.cgi/tech/1640872622/42
43: デフォルトの名無しさん [sage] 2022/02/06(日) 22:20:03.49 ID:jR6D7dXS >>37 ヤバスギでしょ http://mevius.5ch.net/test/read.cgi/tech/1640872622/43
44: デフォルトの名無しさん [sage] 2022/02/06(日) 22:29:45.95 ID:7lkHt7VO あらゆる形式に対応するためじゃない責務を明確に分けるため 仮に変更される可能性がなければ1つの関数でシステムを組むのか?そうはならんやろ 変更される予定がなくても責務は分けて作るんだよお仕事ではね ProtobufはgRPC バイナリで有名なのだと他にもMessage Packとか こっちはゲームとかfluentdで有名 君はFizzBuzzのノリでエンタープライズ開発しそうだね http://mevius.5ch.net/test/read.cgi/tech/1640872622/44
45: デフォルトの名無しさん [sage] 2022/02/06(日) 22:30:03.08 ID:Uni4uKu0 そのDDDの文脈でTSだとバリデーションが必要で GoやC#だとバリデーションが必要ないケースってどんな場合のこと? http://mevius.5ch.net/test/read.cgi/tech/1640872622/45
46: デフォルトの名無しさん [sage] 2022/02/06(日) 22:33:52.37 ID:jR6D7dXS >>45 Goは完全コンストラクタを実装できない、誰でもインタスンス作り放題ヤリ放題だからバリデーションなんかいらんのや! バリデーションなんて軟弱フニャチンオカマ野郎がへっぴり腰を振ってるようなもんだ! ファッキューLGBT! http://mevius.5ch.net/test/read.cgi/tech/1640872622/46
47: デフォルトの名無しさん [sage] 2022/02/06(日) 22:50:56.58 ID:7lkHt7VO >>42 TypeScriptでもそうすれば良いじゃんってのはその通り 別にTypeScriptがclass使えないとかそういうことを問題視してるわけじゃぜんぜんないんだ ここで最初に戻ってよくレスを読んでみて 私が提起した問題点はこれね 「PODの濫用が標準的なコーディングスタイルとして受け入れられてる」 この問題に関しては言語自体の話題じゃないんだよ ようするに今日やったような問答をTypeScript人材を雇うと毎回全員にやらなきゃならない可能性が高いってこと これじゃ申し訳ないけど仕事にならないよ なので鯖サイドではTypeScriptは残念だけど人集めの段階でNGってことになるわけ 規模でかくなるのわかってるんだから最初から鯖サイドではちゃんとレイヤ分けましょうねクラス使いましょうねSOLIDなコード書きましょうねでスッと話が通じる人が多い言語で計画立てたいわけさ そうなると古臭いけどJavaなど無難な選択肢しかないんだよな… http://mevius.5ch.net/test/read.cgi/tech/1640872622/47
48: デフォルトの名無しさん [sage] 2022/02/06(日) 22:57:06.33 ID:AuLf6V7C >>44 まあ君とは平行線のようだね。 > 仮に変更される可能性がなければ1つの関数でシステムを組むのか? 組むぞ。俺は変更される可能性がない所に依存するのは全く問題ないと見てる。 そして基本的に実行効率重視だから、無駄な事はしない。 君はドメインが「1年が365日である事を知っている必要はない」として、365すらもリテラルでは書かないのだろう。 そして人類が火星に到達した時、君のコードは無修正で動くが、俺のコードは役に立たない。 でも俺は、「一方ロシアは鉛筆を使った」は大切にすべきだと思ってるから、 365はリテラルで書いてしまって、火星に到達してから書き直す事を選択する。 俺はJSONが廃れる未来なんてないと思ってるから、コードがJSON形式に依存するのも何ら問題を感じないし、 今のJSのアーキテクチャ、つまりtoJSONを整備しろ、で全く問題ないと思ってる。 これは確かに分離出来てないアーキテクチャだけど、する意味もないと思うよ。 むしろ他言語でもJSON使えないのはポンコツ扱いだろ今は。 > gRPC > Message Pack > fluentd JSONがあまり効率のいい形式ではないのは事実で、これに対する策のようだね。 ただ、俺ならI/O層でJSON形式から変換させる。 つまりドメイン層はtoJSONを定義して、それでおしまい。それ以上の形式が欲しければI/O層で変換だ。 君のアプローチより現実的だと思うけど。 http://mevius.5ch.net/test/read.cgi/tech/1640872622/48
49: デフォルトの名無しさん [sage] 2022/02/06(日) 23:02:11.49 ID:AuLf6V7C >>47 そりゃお前のノリでやってくれる奴はお前の畑の奴だよ。 それがJavaならそうすればいいだけ。 ただ、PODが駄目だってのはただの先入観で、 実際それでやってる奴が多くて、それでも世界が回ってるのなら、お前が勘違いしてるだけだよ。 http://mevius.5ch.net/test/read.cgi/tech/1640872622/49
50: デフォルトの名無しさん [sage] 2022/02/06(日) 23:08:32.84 ID:7lkHt7VO >>48 うん TypeScripterとは分かり合えない人が多いだろうなとは思ってたけど君とは特に分かり合えないと思う 関数1つでシステム書く人を理解するのは私には不可能だ 365をリテラルで書かないのはDDDとかそれ以前の問題だと思うよ 君の書いたコードって四年に一回ぐらいバグ出してない?大丈夫? 処理効率が大事な部分でわざわざJSONを経由して効率落とすの? ライブラリ開発者が必死になって直列化コストを削減してくれたのを嘲笑うかのような所業 やっぱり理解できないや http://mevius.5ch.net/test/read.cgi/tech/1640872622/50
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 326 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.008s