自分だけが使うアプリにしても、1週間たつと、なんでそんなコードを書いたのか思い出せないことが多い😓
というわけで本章では、自分が/他人があとで読んでも分かりやすいプログラムの書き方を紹介していく。これという正解や定石があるわけではないが、読みやすいプログラムの原則を覚えていっていただければ幸いである。
そして、読みやすいプログラムを書くことはバグを防ぐことに繋がる。仕様設計に内在するバグ(仕様バグ)はどうしようもないが、少なくとも仕様設計を素直に読みやすくプログラムにすることで、コーディングレベルのバグは予防できるのだ。
というわけで本章では、自分が/他人があとで読んでも分かりやすいプログラムの書き方を紹介していく。これという正解や定石があるわけではないが、読みやすいプログラムの原則を覚えていっていただければ幸いである。
そして、読みやすいプログラムを書くことはバグを防ぐことに繋がる。仕様設計に内在するバグ(仕様バグ)はどうしようもないが、少なくとも仕様設計を素直に読みやすくプログラムにすることで、コーディングレベルのバグは予防できるのだ。
読みやすいプログラムの原則
これから各節で紹介する原則をまとめて掲げる――。
- 入力データや連携データをバリデーションチェックする。
- 条件制御は、小さな部分集合から大きな部分集合へ向かって順に並べる。
- 条件が多い場合は、関数として分離して単体テストで抜け漏れを防ぐ。
- 各々の条件が独立している場合は、配列を利用して見通しをよくする。
- ループ制御のカウンタは振動しないものを選ぶ。
コラム:確証バイアス
プログラムを書いているうちに確証バイアスに囚われることがある。無意識のうちに自分にとって都合のいい情報ばかりを集めてしまい、反証情報を集めなかったり無視する傾向のことだ。
最近は、ググったり、チャットボットに聞くと、そこそこ利用できるコードが返ってくる。便利な世の中になったものである。それらのコードを埋め込んで動かすと、まあ、だいたい設計書通りの動きをする。
だがしかし、本当に仕様書の一言一句を間違いなくチャットボットに伝えたろうか。チャットボットが解釈ミスをしていないだろうか。
そんなときは、反証データを投入してみる。正しくエラーを吐けば、テスターに渡しても大丈夫なレベルだ。もしそうでなければ、無限ループに陥ったりしたら‥‥あなたは確証バイアスに囚われている可能性が高い。
そういうときは、先輩プログラマにレビューしてもらおう。
最近は、ググったり、チャットボットに聞くと、そこそこ利用できるコードが返ってくる。便利な世の中になったものである。それらのコードを埋め込んで動かすと、まあ、だいたい設計書通りの動きをする。
だがしかし、本当に仕様書の一言一句を間違いなくチャットボットに伝えたろうか。チャットボットが解釈ミスをしていないだろうか。
そんなときは、反証データを投入してみる。正しくエラーを吐けば、テスターに渡しても大丈夫なレベルだ。もしそうでなければ、無限ループに陥ったりしたら‥‥あなたは確証バイアスに囚われている可能性が高い。
そういうときは、先輩プログラマにレビューしてもらおう。
参考書籍
(この項おわり)
バグ対策、機能改良‥‥仕様書や設計書を読めばできることになっているが、現実問題として、プログラムそのものを読まないと作業が進まないことが多い。とくに業務プログラムともなれば、最初にプログラムを書いた開発者と、バグ対策するサポート技術者が違う人であることが多い。プログラマが仕様設計をコードに落とし込んだ意図を汲もうと、サポート技術者は時間をかけてプログラムを読み込まなくてはならない。