5章カプセル化
今までに家や土地、会社や車といった重要なものを買ったことはあるでしょうか?
あるとしたら、契約を結んだと思います。契約には双方の権利と義務が定められています。売り手は物件の引き渡しを約束します。買い手は所定の時期までに決まった金額を支払うことを約束します。売り手は物件の状態について何らかの保証をします。買い手は取引が終わったあとに売り手に損害賠償責任を問わないことを約束します。などなど。
契約は、それがなければ存在しなかったであろう信頼レベルをもたらし、形式化します。なぜ知らない人を信頼すべきなのでしょうか? それには大きなリスクが伴います。でも、契約という制度がそのギャップを埋めるのです。
それがカプセル化の意味です。オブジェクトが妥当なふるまいをすることをどのように信頼できるのでしょうか? オブジェクトに契約を結ばせることで、それを実現します。
5.1 データの保存
耐え難い緊張を解決することなく、4章は幕を閉じました。例4-15では、Post
メソッドが受け取ったデータを無視して、ハードコードした予約を保存しています。
これは欠陥です。修正するにはコードの追加が必要ですが、これを起点にしてカプセル化を議論するのがよいでしょう。これは一石二鳥になりますが、まずは1つめから始めましょう。
5.1.1 変換の優先順位
可能なときは、忘れずにドライバーを使ってください。例4-15でハードコードしている値は、単一のテストケースを成功させるためのものでした。この状況をどう改善できるでしょうか?
単にコードの修正だけで済ませたくなるかもしれません。まったく難しいことではないからです。でも、チームをコーチするとき、開発者にはスピードを落とすように常に言わなければいけません。テストや分析ツールといったドライバーに答えるようにしてプロダクションコードを書いてください。小さなステップで前に進めれば、間違えるリスクが減ります。 ...
Get 脳に収まるコードの書き方 ―複雑さを避け持続可能にするための経験則とテクニック now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.