こんにちは!みやしんです。
Pythonに限らず、プログラミング初級~中級くらいの方に特に当てはまると思うのですが、こんな悩みはないでしょうか?

いつもコードがぐちゃぐちゃで読みづらい。。。
どう書けば読みやすいのだろう?
作法とかあるのかな?
他人にコードを見せるのもちょっと恥ずかしいし不安だにゃ!
あるあるですよね~。。。
今回は、そんな不安を解消するために、プログラミングをするならば必読の本「リーダブルコード」について簡単にご紹介します!
オススメの参考書 [リーダブルコード]
プログラミングの作法を理解し、キレイなコードを書きたい方にオススメの本があります。
著書「リーダブルコード」です。
私も実際に読んでみましたが、なぜこう書くべきなのかを理由もしっかり説明してあり、とても分かりやすいと思いました。
僕は電子書籍よりも、冊子派なのでバイブルとして書籍を持っています。
オススメな点を簡単にまとめますと、
- 読みやすく書いてあり、読書が苦手な方でもサクサク読めると思います
- プログラミング初級者~上級者まで、幅広い層に役立つ内容と思います。中級者くらいが一番フィットするのではないでしょうか。様々な言語で例を紹介されるので初級者の方には少し読みづらいかもしれませんが、コーディング中に疑問に思ったり困ったときにこの本で調べてみるのが良いと思います。上級者の方は復習にもいいですし、新たな発見があるかもしれません。
- 基本的な作法が理由づけてしっかり書いてあるので、独学プログラマーやコードレビューを受ける機会が少ない方にもオススメと思いました。
以下に一部内容をご紹介します。
良いコードとは
情報が分かる名前を付ける
パッと見て何の情報か分かるかどうかは読みやすいコードの必須条件です。下記のような項目を心掛けましょう。
・コードは他人が最短で理解できるように書く、明確な単語を選ぶ
ex) Size ×これでは何のサイズか分からない → Height, MemoryBytes 〇分かりやすい
・for文などでよく使う i、j、kなどのイテレータもclub_i, members_j, users_kのように情報を足すだけで分かりやすくなる
・単位が明確なものは名前に付けると分かりやすい
ex) start → start_msec :単位がmsec、 limit → max_bps:単位がbps
・その他の重要な属性の付与例
ex) 暗号化する前のパスワード password → plaintext_password
htmlの文字コードをUTF-8に変えた html → html_utf8
※情報の付与は大きなバグに繋がりそうなところだけに使う
・変数の近くに情報(変数の型、初期値など)が見えているのであれば「m」のような短い名前を付けても良い
・広い範囲で使う変数であるならば多少名前が長くなっても、しっかりと意味が分かる名前を付ける
・テキストエディタの「単語補完」機能があるので長い名前も問題ない
誤解されない名前を付ける
自分が意図した内容とは違った意味でコードを読んだ人に間違われてしまわないように、紛らわしい命名は避けた方がいいですよね!
・filterはあいまいな言葉なので使うのを避ける。選択するのか、除外するのか分かりにくい。
・Limitもあいまいな言葉。限界値を含むのか含まないのか分かりにくい。max_やmin_を使うのが良い。
・start, last を使うとlastは含まれるのか含まれないのか分かりにくい。包含的範囲はfirst, lastを使うのが良い。
ex) (start=2, stop=4) → 2,3? 2,3,4? (first=2, last=4) → 2,3,4
・包含/排他的範囲にはbeginとendを使う
ex) イベント開催期間 begin=”OCT 16 12:00am”, end= “OCT 17 12:00am”
・ブール値の変数には、頭にis・has・can・shouldを付けて分かりやすくすることが多い
・複数の名前を挙げて分かりやすさや誤解がないかを検討する
・最善の名前とは誤解されない名前
美しさ
・読み手が慣れているパターンと一貫性のあるレイアウトで書く
・似ているコードは似ているように見せる
・関連するコードをまとめてブロックにする
・改行は一貫性のある位置でする
・縦のラインを揃える
ex)
CheckPrice("book" , "car" , "" )
CheckPrice("apple" , "ship" , "" )
CheckPrice("shoes" , "kimono" , "phone" )
CheckPrice("PC" , "mouse" , "USB" )
・並び順には意味(重要なもの順、アルファベット順等)や一貫性を持たせる(一連の繋がりのある箇所は同じ法則を使う)。
・空行を用いて意味の塊ごとに「段落」を作る
コメントすべきことを知る
・コードからすぐに分かることはコメントに書かない
・コメントを付けなくても良いように、関数やクラスの名前を工夫する
・自分の考えを記録する
などなど、気になる方は本書を確認してみてください🤗
コメント