優れたコードを書くには/リーダブルコード
どうも、りつです。
僕は今の仕事ではコーディングをすることはないんですけど、自宅でプログラミングの学習をしています。
ただ、コーディングするにあたって、「変数や関数の名前どうしよう」、「過去に書いたコード理解しづらいな」などの問題が多々...
現場で経験して培っていく事もできないため、エンジニアの方に人気な読みやすいコードを書くための本「リーダブルコード」を購入し、自分なりにまとめてみました。
重要だと感じたのは以下の3つです。
・変数や関数にわかりやすい名前を付ける
・大きい塊は理解しやすいレベルまで小さくする
・なるべくコードを書かない
以下から順番に解説していきます。
■優れたコードとは何か
まずそもそも「優れたコード」とは何でしょう。
皆さんはコードを書くとき何を大事にしていますか?
この本では、優れたコードとは
「他の人が最短時間で理解できるコード」
と定義しています。
例えば、あなたが書いたコードの改良を他の人が担当するとします。
その時担当者はあなたのコードを読んで、短い時間で理解し、改良することができるでしょうか。
ここで理解しにくいコード、つまり「優れていないコード」を書いてしまっていると、理解するにも時間が掛かり、そこからの改良に関しても大幅にコードを変更することになってしまい多大な時間がかかってしまいます。
そして、ここでいう「他の人」には「未来の自分」も含まれています。
たとえ自分が書いたコードであっても構成が整っていないコードだと、何年後かに見たときに理解するのに時間がかかりますよね。
その理解する時間を最小限に抑えているコードが「優れたコード」というわけです。
それでは以下から「優れたコード」を書くためのポイントを解説します。
■わかりやすい名前を付ける
冒頭でも書きましたが、変数や関数に名前を付けるとき迷いますよね。
迷いに迷った挙句strやval、sizeなど適当な名前を付けてしまいがちな僕です。
しかし、そんな名前では他の人が見たとき、瞬時に何に使用する変数、または関数であるのか判断できません。
ここで大事なのは、「名前に情報を埋め込む」という考えです。
例えば、皆さんは「size」という変数を見たとき、何に使用する変数か瞬時に判断できますか?
なにかのサイズ、大きさが格納されていることはわかりますが、何の大きさなのか、単位は何なのかまではわからないと思います。
ではこの変数が「ssd_size_mb」という名前だったらどうでしょうか?
この変数はSSDの容量を表していて、単位はメガバイト(MB)というところまで理解することができます。
名前一つでここまで理解度が変わるのです。
また、名前を付ける際は類語辞典を用いて的確な名前を付けることを心掛けましょう。
例えば、先ほどSSDの容量の変数で「ssd_size_mb」という名前を付けましたが、「ssd_storage_mb」や「ssd_memory_mb」とした方が的確ですよね。
たかが名前と考えずに、なるべく正確な情報が伝わる名前の付け方を心掛けましょう。
■大きい塊は理解しやすいレベルまで小さく
私生活において、大きいものをそのまま理解しようとするより小さくわけて1つずつ理解していく方が簡単だし早いですよね。
コーディングする際も同じであまりにも長いと読むのに時間がかかったり、どんどん変数が増えてスコープの管理が難しくなったりします。
細かく分割する際に意識すべきなのは
・1度に1つのタスクを意識する。
-1つの関数で計算処理のみ実施など。
・スコープをせまくする。
-頭の中で管理する変数を最小限に。
・説明変数・要約変数で式を小さくする。
-ド・モルガンの法則も有効。
などです。
また、あくまで小さくする目的は理解しやすくすることです。
小さくしすぎると逆に理解しにくくなってしまうので、気を付けましょう。
■コードを書かない
何言ってんだって顔をしないでください。
この世で最も理解しやすいコード、それは何も書かれていないコードです。
なに当たり前のこと言ってんだって思うかもしれないですが、冗長な機能のコードを書いたりライブラリを使わずに長ったらしいコードを書く人も多数いるようです。
それが間違っているとは言いません。場合によっては必要な事でしょう。ですがそうでない場合は思い切って切り捨ててしまうことも大切です。
コードをなるべく書かない方法は以下です。
・要件を確認し、必要のない機能を切り捨てる。
-100%のコードを書く必要はないです。
・ライブラリ、APIを積極的に使用する。
-長ったらしいコードを書くよりも理解しやすいです。
・汎用的な機能はユーティリティコードとして用意しておく。
-何度も同じコードを書く必要がなくなります。
■まとめ
「優れたコード」とは何か、どのようにコーディングするのかを解説してきました。
正直今回は簡単にまとめましたのでまだまだ「優れたコード」の書き方は奥が深いです。
ですので、これだけじゃ足りない!という方は本を読むことをお勧めします。
また、学ぶだけではなく、普段の仕事や自宅でのコーディングで実際にやってみることが大切です。
実際に理解しやすいコードを意識してコーディングし、こうじゃないああじゃないと障害にぶつかりながら感覚的にコツをつかんでいきましょう。
他人のコードを読んで「こうしたほうが理解しやすいな」と思えるようになったらベストです!次は周りを巻き込んで「優れたコード」を書ける人を増やしていきましょう。
僕もまだ読了したばかりなので、一緒に頑張りましょう。
それでは.