【やさしく解説 設計編 #3】うっかりを防ぐのは、張り紙? それとも形? 〜規約による保護と、構造による保護〜
コンビニのセルフ式コーヒーメーカーを思い浮かべてください。登場したころはボタンに「R」「L」とだけ書かれたおしゃれなデザインだったのに、いつのまにか「Rはレギュラーです」「カップを置いてから押してください」——手書きのシールとテプラでびっしり覆われていた、あの光景です。
大事なルールを、みんながうっかり破らないようにする方法は、実は2種類しかありません。「張り紙で守る」と「形で守る」です。
張り紙は今日すぐ貼れる立派な応急手当です。
でも、読む人の注意力がないと働きません。
そして人は、急いでいるし、疲れているし、いつか入れ替わります。
一方、昔の四角いUSBプラグは上下逆さまには挿さりません。
「逆向き禁止」の張り紙がどこにもないのは、間違った挿し方がそもそもできない形をしているからです。
コードのコメント、設計書の注意事項、全34項目のチェックリスト...私たちの現場にも、テプラはたくさん貼られています。
この資料では、それを見分ける魔法の質問をひとつ持ち帰ってもらいます。
「このルール、新人さんが張り紙を読まなくても守れますか?」
読み終えたら、自分の職場やコードの中で、いちばん張り紙が密集している場所を探してみてください。
直し方はまだ考えなくて大丈夫。「ここに生えてるな」と気づくことから始めましょう。
記事一覧
【 設計編 #1 】 「ドメイン駆動」と「実装駆動」ってなに?
`軽量DDD` `設計判断の出発点` `DDDの肯定形の対義語`
【 設計編 #2 】 持ち主の寿命のはなし
`所有性` `依存先の寿命` `公共構造(SQL・HTTP)とベンダー製品`
【 設計編 #3 】 規約による保護と、構造による保護
`ポカヨケ` `型と制約で守る` `人依存の規約は最下位層`
【 設計編 #4・本編最終回 】 何があなたの手を動かすのか
`変更理由の出所` `単一責任原則の「責任」` `要求の駆動源`