「PHP7 で堅牢なコードを書く」 のスライドを見て
PHP7 で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 / PHP Conference 2016
一年前にも見てその時は曖昧な理解だったけども、今見たら「それありがたい!わかる!そういう名前ついていたの...あ、そういう考え方もあるのか、なるほど...」となった
嬉しみ
- 防御的プログラミング
- やって欲しいことをやりやすく、やって欲しくない事をやりづらくする
- 型による防御
- 攻撃的プログラミング
- 中途半端に動くより死んだ方がマシ(原因を特定しやすい、影響が小さく済む)な時にやる
- 正当性と堅牢性
- 個々のクラスは正当性を重視する
- 表明プログラミング
- 表明は、実装するエンジニア間で必要なコミュニケーション
- 副作用があってはいけない。本番ビルドで無効になる表記をする。(-> assert)
- 契約プログラミング
雑感
- 防御的プログラミング
-> 手法の名前は知らなかったが、会社の人がやっていたのを真似して常日頃嬉しみを感じていた部分で、名前知れてよかった。 - 正当性と堅牢性
-> 正当性について自分の認識が曖昧だったのが更新された。対で考えてなかったけど、片方を上げればもう一方が下がる対の存在だよなぁ。堅牢性はViewの所でいい感じにやるのが良いかな、というかそうしていたように思う。 - 表明プログラミング
-> 集約のスライドでも見てなんとなく良さげ〜ぐらいしか思っていなかったけど使いどころが腑に落ちた。(assertの使い所いまいち分かっていない問題も解決した) - 契約プログラミング
-> 日頃作っていて責任の所在に悩むことがあり、所在に悩むと値チェックもエラーハンドリングもどこでやるべきなのか悩んで困るのだけど、分け方が腑に落ちた(多分)