はじめに
この記事は「プリンシプルオブプログラミング 3年目までに身につけたい一生役立つ101の原理原則」を読んだ際に記した議事録です。
著作権の関係により、詳細には書きません。詳しい詳細を知りたい方はぜひ本書を読んでみてください。
プリンシプルオブプログラミングをPOPと訳します。
What : コードは修正されるもの
コードを書くとき、最優先の価値を以下の二つにおきます。
- 単純性
- 完結性
新規に書くときだけでなく、修正する際、機能を拡張する際も常に考えます。
Why : コードは無秩序へと向かう
コードは自然に任せて修正していくと無秩序になり、複雑になっていきます。そして複雑なコードは読みにくく、修正しにくいです。修正したとしても品質が悪くなり、時間もかかります。そして、最終的に「腐ったコード」という末路を迎えます。
コードには必ず修正が入ります。ですので「修正容易性」は欠かせない、守っていかなければならないコードのコンディションです。
Haw : コードに余計なことをしない
プログラミング中は「動作させるために、最もシンプルなものは何か」と常に問いかけるようにすることです。
精神論ですが、意識して作業しないと複雑へと向かってしまいます。そうなってしまうのには下記のような理由があります。
新しく覚えた技術を使いたい
技術を覚えた後など、使えそうな場面が来たら不要にトリッキーなコードを書いてしまうことがあります。コードは頭の良さ、技術の高さをアピールする場所ではありません。「ユーザーに価値を提供するもの」です。
その書き方が、本当に必要かどうかを常に吟味して、コードがシンプルであり続けることに「愚直」に取り組んでください。
将来の必要に備えたい
「将来、必要になるかもしれないから、今書こう」なんて考えも不要です。
「今不要なら、今書かない。」これがベストプラクティスです。
勝手に要件を加えてしまう
勝手に用件を判断して余計なコードを加えてしまうことがあります。それはその選択が一番楽だからです
しかし、要件を決める1番の要因になるのはユーザーです。不要なコードを書いてしまうと保守にかかる手間と時間が雪だるま式に増えることになります。
私的には、上の二つはとても共感できます。野球でもホームランを打つことが一番かっこいいことですが、野球はホームランを打つ競技ではありません。「点の取りあい合戦」です。何が言いたいかというと、「人は派手なものやかっこいいものに目がいきがちですが、それが本質とは限らない」ということです。
発展 : KISSの適用範囲
KISSはコードだけでなく、外部仕様にも適用できます。機能ばかり多くて、複雑なソフトウェアは結局使われなくなります。機能を少なくして、インタフェースをシンプルに保つと「使いやすい、使われるソフトウェア」になります。
一昔前の「Android」と「iPhone」がまさにこれだった気がします。私はどちらも使ったことがありますが、Xperiaは昨日が多く、何がなんだかわからないことが往々にしてありました。そして、iPhoneに変えた途端、KISSの原則がきっちり守られていて、虜になりました。
これはハードの話ですが、ソフトウェアにおいても全く同じことが言えると思います。
関連
less is more
「より少ないことは、より豊かなこと」という意味です。もともとは建築の分野から来た言葉です。
そしてソフトウェアにも当てはまります。コードをシンプルに保ち、余計なことを書かないことによって問題を未然に防ぐことができます。そのようにして出来上がったソフトウェアやコードは洗練された美しいものになります。
「自分が今書いているものは本当に必要なものなのか」が大事ですね。
オッカムの剃刀
「事象を説明する際に、必要以上の前提を仮定するべきではない」という考え方です。わかりやすく言い換えると、「事象を説明する際、最も単純なものが正しい」ということになります。
プログラミングにおいても、昨日が同じであれば、余分なものを含まないコードが良いコード(読み手の負荷が減り、読みやすい、改善しやすいコード)になります。
終わりに
この記事ではプリンシプルオブプログラミング 3年目までに身につけたい一生役立つ101の原理原則の議事録を自分用に記しています。
この記事ではカバーしきれていない部分も多いので、是非本書を手にとって読んでみてください。
次回、「【POP5】DRY」です。ぜひ、次の記事も読んでみてください。