【読書感想文シリーズ】リーダブルコード編(前編)

記事タイトルとURLをコピーする

コード初心者の古川(智)です。
最近、コード初心者の登竜門(たぶん!)『リーダブルコード』を読み始めました。

読書感想文シリーズとして、コード初心者の方向けに、同じくコード初心者の私が『リーダブルコード』の内容を紹介していこうと思います◎

また、コード玄人の方で、この部分解釈違う気がするよ!等気が付いた方いれば、教えていただけると嬉しいです。

(コード例のみを本書から引用しています。)

www.oreilly.co.jp

はじめに

リーダブルコードとはどんな本なのか、私のコーディングレベル、なぜ読もうと思ったのかをまず書きます。

『リーダブルコード』ってどんな本?

可読性の高いコードを書くためのヒントが詰め込まれている本です。

一般的な技術書と違い、話し口調で書かれているためとっても読みやすい本となっています!

本の中にはサンプルコードが沢山載っているので、多少のプログラミング知識を得たうえで読んだ方が深い理解に繋がると思います◎

私のコーディングレベル

主なプログラミング勉強方法はProgateという感じで、

見やすさやロジックの簡潔さはガン無視して、無理やり知っている方法で強行突破する、という書き方でやっていました。

どのくらいひどいコードを書いていたかと言うと、

1年目でPython研修に参加した際、トレーナーから「アーティスティックなコードを書くね」というお言葉をいただいたくらい、読みにくいコードを書いていました。

読もうと思ったきっかけ

コードのより良い書き方ってどうやって勉強すればいいんだろう?と思い、コードをバチバチにかける先輩に相談したところ「とりあえず最初は『リーダブルコード』」とのことだったので読み始めました。

「なるほどなぁ」と思ったポイント

ここからは本の内容で私が「なるほどなぁ」と思った箇所を紹介していきます。 初心者の方は共感していただけることと思います!

優れたコードとは

短くて簡潔なコードは素晴らしい!という認識は皆さんもっていると思います。もちろん私にもありました。

でも実はこれ「短くて簡潔で理解しやすいコードは素晴らしい」が正しいのです!!

私は勘違いしていて「短くて簡潔なコード」つまりワンライナーのコードって最高なんだ!と思いこんでいました。これは大間違いです✖

例えばこんなコードがあります。

assert ((!(bucket = FindBucket(key))) || !bucket->IsOccupied());

(※『リーダブルコード』,p4から引用)

簡潔ですが、内容を理解するまでに少し時間がかかります。

これをこんな感じに書き換えることもできます。

bucket = FindBucket(key);
if (bucket != NULL) assert(!bucket->IsOccupied());

(※『リーダブルコード』,p4から引用)

簡潔ではないですが読みやすく、理解するまでにかかる時間はこちらのほうが短いです。

コードは短ければ良いというものでありません。理解するのにかかる時間が短いコードが優れたコードです。

名前に情報を詰め込む

コード書く際にロジック以外で悩むこと第1位は「名前付け」ですよね?

インターネットからページの情報を取ってくる関数を作成したとき、こんな感じで関数名を付けたとします。

def GetPage(url):
・・・

(※『リーダブルコード』,p10から引用)

「GetPage」ってシンプルで分かりやすい単語だし良さそうに感じます。

ですが「GetPage」とだけ書かれていても

  • データベースからページを取ってくるの?

  • キャッシュからページを取ってくるの?

  • インターネットからページを取ってくるの?等

どこからページの情報を取得するのか、一目で判断できません。

これをこんな感じに書き換えると、どうでしょうか。

def DownloadPage(url):
・・・

(※『リーダブルコード』,p11から引用)

インターネットからページ情報を取得するというのが、関数名を見ただけで分かります。

このように、名前を見ただけで情報を取得できるような名前をつけるのがGoodです!

そのためにも、似た表現で違う言い回しが無いかを常に検討していく必要がありますね!
例えば「make」の代替案として本書で挙げられている単語には以下のようなものがあります。

「create」「build」「set up」「generate」「add」「new」「compose」

類語辞典等をフル活用して、名前に情報を詰め込んでいくのが重要です。

(とはいっても、英語ネイティブではないので、的確かつ具体的な英単語を見つけるのに苦労しています…。)

おわりに

気が付いたら2000文字も書いていました!読書感想文シリーズの『リーダブルコード』編はまだ続きますのでお楽しみに!!

※続編の公開日は未定です。

古川智絵 (執筆記事の一覧)

2020年新卒入社 技術課(SRE1課)に所属 好きな食べ物はみそ汁