Closed32
データ指向プログラミングを読む(Go的解釈と初春の風を添えて)
こちらの本です
データ指向の恩恵として説明されていることは「複雑性を軽減し、ソフトの変更を容易にする」こと
- コードとデータを分離する。
- コードはモジュールにまとめる。(言語によって事情が違うが、例えばパッケージだったり、例えばメンバ無しのクラスオブジェクトだったり)
- データはメソッド無しのクラスにまとめる。
コードは引数にデータオブジェクトを取る
データはmap[string]T(同種マップ)、配列、map[string]any の三種類のみ。
安全性を犠牲にして拡張性を高めている。
データのフィールドにアクセスするのはとても簡単。メソッドチェーン的なアクセスではなく、インデックスのパスを与えるだけ。
パスが第一級市民。
なんとなーく、データだ!と言っている意味がわかってきたような…。
あくまでプリミティブとコレクション、インデックスで全てを表現する。このパラダイムの根底にあるのは前述したように安全性と変更容易性のトレードオフ。
コードを読んでもデータの構造を知る術はない(あとでテクニックが出るらしいが)
図を書いておく必要あり
存在しないキーでインデックスにアクセスすることも容易に起きうるが、単体テストしてれば当然発見できるよね、ってスタンスなのかな?
それはまあ、その通り
私たちが型を拠り所にしているのは賢いLSPの仕組みに頼って安全にコードを書いていくためであって、コードの出来栄えは型に頼っているわけではない。
パスの扱いについては一つ上のスレッド参照。gjson?lodash.get?を考えよう
後半(part3)はDOPとは関係ないようにも見える内容(コードをわかりやすく保つコツなど)が出てきた
データ中心アーキテクチャ(DOA)ってのが先にあるのね(検索して知った)
うーん、結局オブジェクト指向で、エンティティとサービスを区別して使うのでは?
このスクラップは2023/10/25にクローズされました