Open5
〇〇の原則/法則をあつめる
![hiroms](https://res.cloudinary.com/zenn/image/fetch/s--OBZscpWo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/8b03f95180.jpeg)
自分が知らなかった原則と出会ったら追加する。
![hiroms](https://res.cloudinary.com/zenn/image/fetch/s--OBZscpWo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/8b03f95180.jpeg)
principle of non-deception
OOSCで出てきた
ソフトウェアのコンテクストの言葉/原則じゃないっぽくて、アナロジー的な感じで出てきた。
軽くググってみたけど深く調べなきゃ元の意味を理解するのは無理そうだったので、今は深入りするのをやめた。これが役に立ちそう?The Definition of Lying and Deception (Stanford Encyclopedia of Philosophy)多分教養ある人ならなんのことかすぐわかるんだろうなあと思った。
意味の違いをソフトウェアテキストの違いに反映する、やりたいことが同じなら中身の実装がちがうからといって新しい名前をつけるのは避けよう。
![hiroms](https://res.cloudinary.com/zenn/image/fetch/s--OBZscpWo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/8b03f95180.jpeg)
Hyrumの法則
Googleのソフトウェアエンジニアリング
――持続可能なプログラミングを支える技術、文化、プロセス
p.9より
あるAPIに十分な数のユーザーがいるとき、APIを作った者自身が契約仕様としてなにを約束しているかは重要ではない。作られたシステムがもつあらゆる観察可能(observable)な挙動に関して、それに依存するユーザーが出てくるものである。
開発者が仕様として定めている内容以外の挙動に依存するユーザが出てくる。
開発者が想定していないことに依存していることがある。
初見時はよく分からんかったけど、p.20まで読んで腹落ちした。
![hiroms](https://res.cloudinary.com/zenn/image/fetch/s--OBZscpWo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/8b03f95180.jpeg)
デルメルの法則
より形式的に言えば、関数に対するデメテルの法則に従った場合、オブジェクトO上のメソッドMが呼び出してもよいメソッドは以下のオブジェクトに属するメソッドのみに限定される。
- Oそれ自身
- Mの引数に渡されたオブジェクト
- Mの内部でインスタンス化されたオブジェクト
- Oを直接的に構成するオブジェクト(Oのインスタンス変数)
![hiroms](https://res.cloudinary.com/zenn/image/fetch/s--OBZscpWo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/8b03f95180.jpeg)
寿司原則