2004-02-27(Fri) [長年日記]
■1 「Oh No! DTO!」——オブジェクトとデータ構造
「データストラクチャだろうがなんだろーが、other.val = 1 って変えられるってのは問題じゃね?」とあるけれど、私が理解したつもりのところでは:
- オブジェクト指向プログラムには2種類のエンティティが存在する
- それはオブジェクトとデータ構造*1だ
- データ構造には振る舞いがない。振る舞いが無いんだからメソッドも無い
なるほどDTOはクラスでありインスタンスではあるけれど、その本質として単なるデータ構造(従来の構造体とかレコード型、と考えていいのかな)でしかない。となれば、そこにあるのはフィールドだけじゃん。JavaBeans? フーン。ってことかな、と。言い方を変えるならば「DTOはJavaBeansかね?」ということかも。
DTOの仕事は「Layer間のデータを受け渡し」なのだから、送信元の層の端でオブジェクトからDTOへ必要なデータをセット、受信元の層の端ではオブジェクトがDTOからgetするんじゃないのかなあ。その後の処理はオブジェクトを通しておこなわれる、と。勿論オブジェクトには振る舞いがあるし、フィールドはカプセル化される、と。
観点を変えると、フィールド直接アクセスによって「ああこいつはデータ構造なんだな」とひと目でわかるというメリットがあるかもしれない(ここに振る舞いを持たせてはいけない!!)。
——Data Transfer Object(401)を読まずに脊髄反射で書いてしまった。電波飛ばしてしまったか。401頁から読もう……。
*1 といっても、思いつくのはDTOか他システムへのexport/からのimportぐらいだけど……
[ツッコミを入れる]
リーン開発の現場 カンバンによる大規模プロジェクトの運営(Henrik Kniberg/角谷 信太郎/市谷 聡啓/藤原 大)
『なるほどUnixプロセス ― Rubyで学ぶUnixの基礎』
SCRUM BOOT CAMP THE BOOK(西村 直人/永瀬 美穂/吉羽 龍太郎)
実践テスト駆動開発 テストに導かれてオブジェクト指向ソフトウェアを育てる(Steve Freeman/Nat Pryce/和智 右桂/高木 正弘)
The RSpec Book (Professional Ruby Series)(David Chelimsky/Dave Astels/Zach Dennis/角谷 信太郎/豊田 祐司/株式会社クイープ)
アジャイルサムライ−達人開発者への道−(Jonathan Rasmusson/西村 直人/角谷 信太郎/近藤 修平/角掛 拓未)
アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法~(Mike Cohn/マイク コーン/安井 力/角谷 信太郎)
インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践(Ken Pugh/角谷 信太郎(監訳)/児島 修)
アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣(Venkat Subramaniam/Andy Hunt/木下 史彦/角谷 信太郎)
JavaからRubyへ ―マネージャのための実践移行ガイド(Bruce A. Tate/角谷 信太郎)









