この記事で分かること
- 可読性の定義
- 可読性を上げるメリット
目次
- 背景
- 可読性とは
- 可読性を上げるメリット
- 可読性が下がってもいい場合
- 最後に
- 参考
1. 背景
今まで業務で変数の命名、設計ともに知識があやふやなまま実装していました。
それによる弊害として以下がありました。
- 仕様変更、機能追加対応によるデグレ、修正漏れ等が起こりやすくなった
- 新規参集者がデグレを恐れてコーディングが億劫になる、それによって実装スピードが低下する
- コード自体の実装が良くないのでテストコードが書きづらい、それによってさらにデグレが起こりやすくなる
そこで最近「良いコード/悪いコードで学ぶ設計入門」という本を軽く1周しました。
2周目である今回はそこで触れられる内容を深掘りして理解を深め、業務に落とし込みたいと思った為です。
2. 可読性とは
コードの意図や関係する処理の流れの読解のしやすさです
(良いコード/悪いコードで学ぶ設計入門から引用)
当たり前かもしれませんが抽象的なものを扱う際は脳に負荷がかかります。
Our brains need to do more work when dealing with abstractions.
Psychology of Code Readability
以下は極端ですが変数を使った例です。
const a = 0.1;
const CONSUMPTION_TAX = 0.1;
aという抽象的な変数名の為、周辺のソースを見て何の為にこの変数が宣言されたのかを理解しないといけません。
3. 可読性を上げるメリット
個人に収まらずチームにとって長期的なメリットをもたらします。
- 既存コードを読む時間が減り、他の時間に使える
- バグの原因を特定する時間の短縮
- 必要以上に前後を追って読む必要がない
- コードレビューがしやすい
- 機能追加、修正時に今後起こるリスクの把握ができるようになる
- 以下が不要になリます
- コメント
- 仕様書に詳細なロジックを書くこと
- 新規参集者にコードの説明
- ちなみに自分の書いたコードは半年経てば忘れてしまって、他人が書いたコードみたいに思えてしまいます(リーダブルコードから引用)
- 開発スピードの向上
- コードの再利用が容易
- アルゴリズムを見直しやすくなりパフォーマンス向上に繋がる
- リファクタリングがしやすくなりさらにより良い設計、実装ができる
- フレームワークの移行、言語の書き換え等がしやすい
- githubcopilot等、コード自動生成補助ツールの精度が上がる
- コードの重複実装を防ぎ、最低限必要なコードしか実装しなくて済む
- コードを書くのが楽しくなる
- エンジニアのスキル向上をさらに活性化させる
4. 可読性が下がってもいい場合
- プログラムコードを読んで解析されたくない
- 人間にとっての読みやすさよりサイズ縮小が最優先
buildツールでよく見るminifyがその例です。
5. 最後に
- 可読性について改めて考え直すきっかけになりました。
- これから命名、設計等深掘りして記事でアウトプットしていきます!
- この記事が可読性を意識した実装をするきっかけになれば幸いです!
最後に以下、Donald Knuth’sさんの文を引用します。
Let us change our traditional attitude to the construction of programs: Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do
プログラムの構築に対する従来の態度を改めよう: 私たちの主な仕事は、コンピューターに何をすべきかを指示することだと考えるのではなく、コンピューターに何をさせたいかを人間に説明することに集中しよう。
6. 参考
- プログラムの可読性は何故大事か?
- 【プログラミング】コードの可読性について
- 良いコード/悪いコードで学ぶ設計入門―保守しやすい 成長し続けるコードの書き方(技術評論社)
- リーダブルコード―より良いコードを書くためのシンプルで実践的なテクニック(O'Reilly Japan)
- 可読性を高める2つの大きな方向性 - 脳内メモリに優しいコードを書く -
- プログラミングでコードを綺麗に書く隠れたメリット!綺麗に書こうとする意識がメリットを呼ぶ!
- 可読性
- 質の良いソースコードは何をもたらすのか
- 読みやすいコードがもたらすメリット
- A Process for Readable Code
- Why your code is so hard to understand
- Psychology of Code Readability