みなさんこんにちは!山屋です。2025年もよろしくお願いいたします。
さて、プリンシプル オブ プログラミング 3年目までに身につけたい 一生役立つ101の原理原則という本を読んで印象に残った「7つの設計原理」について書いていきます。
『プリンシプルオブプログラミング』の概要
プログラミングに関するプリンシプル(原理、原則)を101個紹介している本です。プリンシプルごとに概要と、守るためにやるべきこと等が説明されています。
どのようなプリンシプルが紹介されているかは目次をご覧ください。
7つの設計原理の内容
実際の開発現場の分析から導出された、品質のよいコードのための「経験則」です。
この原理は主にコードレビュー時のチェック観点として使われます。
メンバーやシチュエーションによってコードレビューの観点がブレないようにするという目的があります。
1. 単純原理
概要
シンプルにこだわること。初心者でも読めるような一貫して単純なコードを書くようにする。
やるべきこと
自然なコードを心がける。高級なテクニックを使わず、単純なやり方で通すこと。
2. 同型原理
概要
形にこだわること。同じことは同じように扱い、例外を設けないようにする。例えば、モジュールにて数値の単位を統一したり、使用順序を統一したりすること。
やるべきこと
一貫性のあるコードを書くようにする。実力をアピールするために、独創的なコードを書くことはやめましょう。
3. 対称原理
概要
形の対称性にこだわること。「アクティブ」があれば「パッシブ」があるように、対になるものを持つようにする。
やるべきこと
「条件」がある場合、「反条件」の整合性も検討すること。加えて例外的な状況を極力排除すること。
4. 階層原理
概要
構造が階層であることにこだわること。物事の主従関係、前後関係などの階層関係を意識し、整理された関係性を構築すること。
やるべきこと
コードの抽象レベルを意識して、1つの階層は同じ抽象レベルのものだけで構成すること。上位レベルから見たときに、下位レベルは「それを外部から見ている」ような視点で記述すること。
5. 線形原理
概要
処理の流れを直線にすること。スイッチでコードを制御したり、状態の数をむやみに増やしたりせずにコードの見通しを良くする。
やるべきこと
処理の流れをあちこちにジャンプさせず、上から下にコードが流れていくようにすること。処理の分岐を少なくすること。
6. 明証原理
概要
ロジックの明証性にこだわること。一見して正しい、と思えるようなコードを書く。
やるべきこと
ロジックが明瞭なコードを書くようにする。そのために、ロジックが直感的でわかりやすいものにすること。また、コードだけで説明できない場合は別途ドキュメントや図、コメントを書くこと。
7. 安全原理
概要
安全性にこだわること。ありえないと思える条件についても考慮してコードを書く。
やるべきこと
全ての動作を洗い出して、それぞれが安全になるように考慮する。要件と機能を理解し、場合分けをコードに正しく落とし込むこと。
設計原理についての感想
業務でコードレビューをすることがあるのですが、どういう点を意識してレビューをすれば良いのか私の中で明確なルールがなかったため今回知ることができて良かったです。
今まではレビューでどんな処理なのかを追うことがメインになってしまっていて、あまり効果的な指摘ができていませんでした。(処理がわかりにくいところに問題が隠れがち、ということは知っていたのですが…)
設計原理の中で特に印象に残ったのは「6. 明証原理」です。
この本では設計原理は主にレビュー観点として紹介されていますが、コードを書く側でも意識すべきことでもあります。レビューにて「コードが何をやっているのかよくわからない」という指摘をもらうことがあり、これから意識しようと思います。
(他のプリンシプルについても触れますが)、わかりやすいコードを書くために「シンプルであること」や「名前重要」をまずは意識していこうと考えています。
終わりに
今回の記事では「7つの設計原理」について書かせていただきました。
この本ではあえて具体的なコード例は書かない方針で、実際にどうすべきかは自分で考える必要があります。ただ読んだだけではプリンシプルは身についていないので、つまりこれからが本番です。これらの原理をレビューや実装の際に意識して、少しずつ身につけていこうと思います。
最後までお読みいただきありがとうございました。