TypeScript part4 (376レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

26
(1): デフォルトの名無しさん [sage] 2022/02/06(日) 19:18:05.78 ID:7lkHt7VO(1/9) AAS
>>24
24(1): デフォルトの名無しさん [sage] 2022/02/06(日) 19:01:45.12 ID:Fo3XpFx5(7/12) AAS
>>23
> 不正なイミュータブルオブジェクトを元に生成した別のイミュータブルオブジェクトもまた不正なイミュータブルオブジェクトになる可能性が高い
繰り返しになるけど、イミュータブルオブジェクトはイミュータブルオブジェクトに影響与えないよ?

> 関数の入り口に間違ったオブジェクトを渡したら関数の戻り値もまた間違ったオブジェクトになることは理解できる?
間違ったオブジェクト渡らないよ? なんの為の型だと思ってるの? structとか使わないの?
データの入り口(IO等)で型バリデーションすればあとは型が化けたりしないよ。
つーか「影響を与える」と私が一言でも書いたかな?
君のレスでは影響を与えるって言葉を変化させるという意味で使ってるように読める
だが私はイミュータブルオブジェクトを元にイミュータブルオブジェクトを「生成する」としか書いてない
modifyとcreateはプログラミングにおいて全く異なる概念なので明確に区別することをおすすめする

PODなら間違ったデータを簡単に渡せる
IO境界だけでバリデーションすればいいという考え方は人間を信用しすぎている
人間は間違えるという前提を忘れてはいけないよ
百点満点のコードを確実に書けると確信できるようなちっぽけなシステムではそれでなんとかなるかもしれないけどね
28
(1): デフォルトの名無しさん [sage] 2022/02/06(日) 19:34:50.15 ID:7lkHt7VO(2/9) AAS
>>25
25(1): デフォルトの名無しさん [sage] 2022/02/06(日) 19:06:18.29 ID:AuLf6V7C(1/7) AAS
>>21
> Jsonを必要としているのは主にIOを司る層であってそれはドメイン層ではない
> 異なる層が負うべき責務を別の層が引き受けるのはクリーンな設計とは言えないよね
> なのでドメイン層のクラスがJson Serializableである必要はない
横だがこれは完全に間違ってるだろ。

シリアライズするのは確かにI/O側だが、他言語も含めて今現在は
クラス側にserialize手段を用意するのが主流だ。TS知らんがJSと同じならtoJSON()。
だからドメイン側でシリアライズする可能性のあるクラスの全てにtoJSONを用意しておくのが正しい解だという事に今はなっている。

I/O側にやらせていたのは昔の設計だ。ただそれの何が悪かったのかは俺は知らない。
(実行効率だけは無茶苦茶良かったから、クラスを導入して非効率になっただけなのかもしれんが)
今はなっている?ないないなってない
適当なことを言わんでくれ

JSONやXMLやバイトストリームやフォームデータのような外界の都合を吸収してシステムが扱いやすい形式に変換する(あるいはその逆の流れ)はドメイン層の仕事じゃない
それは外界とやり取りをするための専門の層の仕事だ
29
(1): デフォルトの名無しさん [sage] 2022/02/06(日) 19:39:52.33 ID:7lkHt7VO(3/9) AAS
>>27
27(1): デフォルトの名無しさん [sage] 2022/02/06(日) 19:28:15.98 ID:Fo3XpFx5(8/12) AAS
>>26
イミュータブルがイミュータブルなままなら問題ないって話しかしてないよ?

> 人間は間違える
そのためのTypeScriptのstructだよ?
structだけじゃ人間は間違えるし問題あるって話をしてる
structではデータ型が合ってるところまでしか保証できない
インスタンスが抱えてるデータが満たすべき条件を満たしていることを保証できるか?そこがポイント
それを保証するにはstructでは不十分で完全コンストラクタを実装したクラスが不可欠
39: デフォルトの名無しさん [sage] 2022/02/06(日) 21:25:43.66 ID:7lkHt7VO(4/9) AAS
>>37
37(3): デフォルトの名無しさん [sage] 2022/02/06(日) 21:14:45.88 ID:AuLf6V7C(3/7) AAS
>>36
まあそれでも出来るけど、それが面倒で二度手間で意味無いからみんなPODを使ってるんだと思うぞ。

FizzBuzzEnterpriseEditionとか、君は本気でやりそうだね。
外部リンク:github.com
君も話がループしてるね
面倒だからPODで済ませるで通じるちっぽけな規模ならそれでいいんだよ私は一貫してそこは否定してないでしょ?
それなりに規模が大きくなった時の話をしてんの

FizzBuzzをエンタープライズの手法で作るのが馬鹿馬鹿しいのと同じように
エンタープライズのシステムをFizzBuzzを書くようなノリで作るのも馬鹿馬鹿しいってこと
40
(1): デフォルトの名無しさん [sage] 2022/02/06(日) 21:33:21.13 ID:7lkHt7VO(5/9) AAS
>>35
35(2): デフォルトの名無しさん [sage] 2022/02/06(日) 20:51:55.71 ID:AuLf6V7C(2/7) AAS
>>28
toJSONを呼ぶのはI/O層の仕事で、
toJSONを定義するのはドメイン層の仕事だよ。

つか、そうじゃないと無理なんだよ。
JSONでは対応出来ない型があるから、何が入っているか分からない状態ではシリアライズは出来ない。
逆に言えば何でもシリアライズ出来れば全部I/O側に任せる事は出来るのだが、
現時点で現実的にこれはバイトストリームしかないから、バイナリデータでメモリダンプ形式で良ければ出来るけど、
これはJSONともXMLとも言わないし、実際これをやってるシステムは今は無いでしょ。
ちなみにバイナリでシリアライズするのはprotocol buffersとか普通にあるよ

で、どんな形式で通信すんの?JSON?バイナリ?XML?CSV?
そんなのはドメイン側は知りたくない絶対に知りたくない
ドメイン側がシリアライズの責務を負ってしまったらじゃあ通信の形式が増えるたびにドメイン側を拡張するのか?
そんなのドメイン側の本質とは全く関係ない通信様式の問題なのに?
44
(1): デフォルトの名無しさん [sage] 2022/02/06(日) 22:29:45.95 ID:7lkHt7VO(6/9) AAS
あらゆる形式に対応するためじゃない責務を明確に分けるため
仮に変更される可能性がなければ1つの関数でシステムを組むのか?そうはならんやろ
変更される予定がなくても責務は分けて作るんだよお仕事ではね

ProtobufはgRPC
バイナリで有名なのだと他にもMessage Packとか
こっちはゲームとかfluentdで有名

君はFizzBuzzのノリでエンタープライズ開発しそうだね
47
(1): デフォルトの名無しさん [sage] 2022/02/06(日) 22:50:56.58 ID:7lkHt7VO(7/9) AAS
>>42
42(1): デフォルトの名無しさん [sage] 2022/02/06(日) 22:16:09.49 ID:jR6D7dXS(1/3) AAS
PODがダメなら普通にclassを使えばいいじゃない
その class に完全コントスクラタと toJSON を実装すればいい

つか贅沢言いすぎや
TSほどJSON API と神話性高く、堅く書けて、ほどよく柔軟な言語ないで
ワイはバックエンドをGoで書かされているが、言語機能の貧弱さに発狂しそうや
爆速でコンパイルできても爆裂バグだらけじゃ話にならん
TypeScriptでもそうすれば良いじゃんってのはその通り
別にTypeScriptがclass使えないとかそういうことを問題視してるわけじゃぜんぜんないんだ

ここで最初に戻ってよくレスを読んでみて
私が提起した問題点はこれね
「PODの濫用が標準的なコーディングスタイルとして受け入れられてる」
この問題に関しては言語自体の話題じゃないんだよ

ようするに今日やったような問答をTypeScript人材を雇うと毎回全員にやらなきゃならない可能性が高いってこと
これじゃ申し訳ないけど仕事にならないよ
なので鯖サイドではTypeScriptは残念だけど人集めの段階でNGってことになるわけ

規模でかくなるのわかってるんだから最初から鯖サイドではちゃんとレイヤ分けましょうねクラス使いましょうねSOLIDなコード書きましょうねでスッと話が通じる人が多い言語で計画立てたいわけさ
そうなると古臭いけどJavaなど無難な選択肢しかないんだよな…
50
(1): デフォルトの名無しさん [sage] 2022/02/06(日) 23:08:32.84 ID:7lkHt7VO(8/9) AAS
>>48
48(1): デフォルトの名無しさん [sage] 2022/02/06(日) 22:57:06.33 ID:AuLf6V7C(5/7) AAS
>>44
まあ君とは平行線のようだね。

> 仮に変更される可能性がなければ1つの関数でシステムを組むのか?
組むぞ。俺は変更される可能性がない所に依存するのは全く問題ないと見てる。
そして基本的に実行効率重視だから、無駄な事はしない。

君はドメインが「1年が365日である事を知っている必要はない」として、365すらもリテラルでは書かないのだろう。
そして人類が火星に到達した時、君のコードは無修正で動くが、俺のコードは役に立たない。
でも俺は、「一方ロシアは鉛筆を使った」は大切にすべきだと思ってるから、
365はリテラルで書いてしまって、火星に到達してから書き直す事を選択する。

俺はJSONが廃れる未来なんてないと思ってるから、コードがJSON形式に依存するのも何ら問題を感じないし、
今のJSのアーキテクチャ、つまりtoJSONを整備しろ、で全く問題ないと思ってる。
これは確かに分離出来てないアーキテクチャだけど、する意味もないと思うよ。
むしろ他言語でもJSON使えないのはポンコツ扱いだろ今は。

> gRPC
> Message Pack
> fluentd
JSONがあまり効率のいい形式ではないのは事実で、これに対する策のようだね。
ただ、俺ならI/O層でJSON形式から変換させる。
つまりドメイン層はtoJSONを定義して、それでおしまい。それ以上の形式が欲しければI/O層で変換だ。
君のアプローチより現実的だと思うけど。
うん
TypeScripterとは分かり合えない人が多いだろうなとは思ってたけど君とは特に分かり合えないと思う
関数1つでシステム書く人を理解するのは私には不可能だ

365をリテラルで書かないのはDDDとかそれ以前の問題だと思うよ
君の書いたコードって四年に一回ぐらいバグ出してない?大丈夫?

処理効率が大事な部分でわざわざJSONを経由して効率落とすの?
ライブラリ開発者が必死になって直列化コストを削減してくれたのを嘲笑うかのような所業
やっぱり理解できないや
51
(1): デフォルトの名無しさん [sage] 2022/02/06(日) 23:09:14.59 ID:7lkHt7VO(9/9) AAS
>>49
49(1): デフォルトの名無しさん [sage] 2022/02/06(日) 23:02:11.49 ID:AuLf6V7C(6/7) AAS
>>47
そりゃお前のノリでやってくれる奴はお前の畑の奴だよ。
それがJavaならそうすればいいだけ。

ただ、PODが駄目だってのはただの先入観で、
実際それでやってる奴が多くて、それでも世界が回ってるのなら、お前が勘違いしてるだけだよ。
それで回る規模の世界はそりゃ回るだろうね
これも何度も言ってるよね
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.244s*