概ね、タイトル通りの内容です。
プログラミングの勉強をしていると、「○○の法則」とか「△△の原則」とか
よく見かけますよね。最初はなんのこっちゃと思いますが(ヽ'ω`)
今回はその中でも個人的に興味深いと思った以下のものをまとめてみます。
- DRYの原則
- YAGNIの原則
- PIEの原則
- コマンドとクエリ分離原則
- 求めるな、命じよ
- デメテルの法則
DRYの原則(【Don't Repeat Yourself】
まずはこれ、割とよく見かけますよね。
DRYはDon't Repeat Yourself(同じことを繰り返さない)の略称です。
同じ情報を複数の箇所に書いてしまうと整合性が取れなくなってしまう。
1つの箇所にまとめて、他は全てそこを参照せよ。という感じ。
プログラミングを学ぶ上で最初に覚えるような
「同じ処理をあちこちに書かない。再利用をできるようにせよ」という時にも使われます。
同じような意味の
OAOO(Once and Only Once)と一緒に覚えましょう。
YAGNIの原則(【You Aren't Going to Need It】
これも有名です。みんな、知ってるね(⌒▽⌒)
YAGNIはYou Aren't Going to Need It(それは必要にならない)の略称です。
あれも必要になるだろう、これも将来必要だろう、
とあれこれ作っても、実際にはほとんど使われない。
そういうことはせずに、実際に必要になった時に追加しようね、という意味の原則ですね。
PIEの原則(【Program Intently and Expressively】
プログラムを書いた意図を明確に表現するように。
これは仕事を通じてプログラミングを行うようになってから大切さが解る原則ですね。
とにかく短く書けば優れたプログラムではありません、
万人が理解できる読みやすいプログラムを書きましょう、という原則です。
私は一人でプログラムを書いている時も、
「三日後の自分は他人だと思え」
という考えながら読みやすいコードを書くように心がけています…(ヽ'ω`)
コマンドとクエリ分離原則(Command-Query Separation)
CQS!CQS!
オブジェクト指向的な原則ですね。近接格闘術は関係なさそうです。
コマンドは命令、クエリは問い合わせ。
両方を同時に行うような関数は作ってはいけないよ、という事ですね。
コマンドで副作用が起きるのは問題ないけれど、
クエリで副作用は起こしてはいけません( ・`ω・´)
求めるな、命じよ(Tell, Don't Ask)
原則とはちょっと違いますが、これも大事だと思います。
オブジェクト指向では重要な要素である「関心の分離」に関連するお話。
オブジェクト指向では「個々のオブジェクトが持つ責任」というのが重要になってきます。
オブジェクトに担当する責任についての命令(コマンド)する時は、
呼び出す側はひたすらに命じるだけでいいよ、ってことですね(´ω`)
デメテルの法則
これもオブジェクト指向に関連する法則。
別名「最小知識の原則」。
「知らないオブジェクトには話しかけない。」
直接繋がっているオブジェクトのことだけを知っていればいい!
オブジェクト同士の依存は最小限にしよう、ってことですね
「何でもは知らないわよ。知ってることだけ」
という羽川さんのようなオブジェクト作りを心掛けましょう┗( ^ω^)┛
|
|
: : :::::::,. -─´、て
::: :: :::Σco===、!,_ 知っていてもすぐ実用できる訳ではないですが…
: : :: :::::l´i(ノリハノリ) もっと勉強しなくてはいけませんね…がんばろう
: : :::::ルlリ⊃⊂ヽ
: : ::::(( //xxxxヽ、─────────────────
/~~~
./