今回は久々に本を買いましたので書籍の感想記事を書きたいと思います。
リーダブルコード
今回購入した本はこちらになります。
どんな本か?
意外と多くのエンジニアが陥りやすい、変数やコードの書き方のわかりにくい例を提示した上で「こんな感じにすれば良くなるよ」みたいなアドバイスを授けてくれる書籍である。対応言語はC++・Python・JavaScript・Javaとなっていて割と幅広くカバーしている。
ただ、一つのコードに対して全ての言語を網羅しているわけではなく、一つの例に対して「使用する言語が変わる」と言った感じです。
どのくらい人気なのか?
こちらは私もお世話になっている転職ドラフトさん(紹介された方も特典がもらえるお友達紹介コードは:LDYQ)のツイートした登録しているエンジニアが「影響を受けた本」のランキングの紹介をしているものです。
このランキングを見るとなんとリーダブルコードはダントツの一位になっております。
※転職ドラフトさんがどういった転職サイトかは下記記事参照
オススメ度
未経験者オススメ度: ★☆☆☆☆
初級者(プログラミング経験1年前後)オススメ度:★★☆☆☆
中級者 (プログラミング経験2~4年前後) オススメ度: ★★★☆☆
上級者 (プログラミング経験5年以上) オススメ度: ★★★★☆
未経験者
この書籍はある程度プログラミング経験を積んだ人が更に一歩上を行く技術を主に記していますので未経験者向けではありません。 学習サイトや純粋な言語技術の習得を優先することをオススメします。
初級者
こちらも前述に同じく、 プログラミング経験を積んだ人が更に一歩上を行く技術を主に記しています 。説明文自体に特殊な用語が含まれているので優先度としてはまだ低いかと思います。あとは初級者までだともっと実務経験値の高い方がコードレビューする機会もあるかと思いますが、その人がリーダブルコードを読んでいるとは限らず、独自ルールでコーディングの指摘をすることもあるのでリーダブルコードに書いてあるような内容の指摘であってもよっぽどの事がない限り、指摘されたことに対して反論はしない方がいいでしょう><
中級者
参考になる部分が結構あります。メソッドの役割をハッキリさせたり、より短いコードで完結させるためにはこうすればいいんだよ。みたいなアドバイスはとても参考になりました。3年も携わっていると基本技術はこなせるので見栄えや構成を意識したプログラミングが大事になりますからね。
C#経験年数で当てはめると私がここに入ります。
上級者
上級者程オススメできます。というのも上級者の方はコードは一見すると難しいがわかると実に合理的!みたいな書き方をしている人が多いのですが反面、その処理に対するコメントがあると助かるのですがそれが無いケースが多く、理解するのに時間がかかってしまいました。
その上級者の方もリーダブルコードの存在を知っていたのですが実践はなかなか難しい・・・慣れた人だからこそ見直してほしい書籍だと思いました。
読んでいった感想
- 第一章~第二章:tmpやループのi,j,kのような汎用的に使われる変数に対して、一歩わかりやすいアドバイスをしてくれている。定数やメソッドに対しても定石に捉われないアドバイスをしていて、考えの柔軟性が生まれる反面、プロジェクト単位できちんとコーディング規約を定めないと担当者によってまったく違う命名が生まれてしまう危険をはらんでいると感じました。
- 第三章~第四章:紛らわしい名前をつけないことと、読み手が見やすいように列や段落をそろえるというアドバイス。そういえばC言語時代はコーディング規約に一行は80文字超えないようにする。というのもあった気がする。今はあまり聞かなくなりましたね。コーディング規約のないプロジェクトが多いからかな?
- 第五章~第六章:コメントの付け方についてのアドバイス。初級プログラマーがやりがちなコメントの付け方という感じがしたが内容によって中級者以上もやってしまいそうな問題。コード規模を図るのにステップ数/ライン数という指標があるがコメントが多い場合にライン数がより多く検出されてしまうのでこの書籍は良い学びになると感じた。
- 第七章:条件分岐系のアドバイス。確かにこれはプロジェクト毎にコーディング規約がなくても考慮しなきゃいけなそうな事が多かった。特に3項演算子は適切に使いたい。
- 第八章:巨大な式の分割。確かにたまにif文の条件がすごい長くなってしまう事がある。これも無理に詰め込もうとするのでなく、状況によって分けることも大切ということを学んだ。
- 第九章:変数の読みやすさについてのアドバイス。グローバル変数・ローカル変数の用途と注意点を学んだ
- 第十章~第十二章:関数・メソッドの明確化についてのアドバイス。自分も直近のプロジェクトでは1メソッド1機能と言われたことがあるが、そこばかりに固執してあちこちにメソッドがばらまかれたら定義追いが面倒になってしまう。そういった注意も記載されていて「そうだよねぇ」と思いました。
- 第十三章:短いコードについてのアドバイス。不要なソースを削除したり、標準APIにあるものを2重に使っていないかなどは確認の余地があると感じた。
- 第十四章:テストコードのわかりやすさについてのアドバイス。個人的にはWeb API以外はテストコード作成否定派なので「そういう考えもあるのかー」という感じでした。直近のプロジェクトで「テストコード」作成の依頼もされたのですが、本体だけでなくテストコードのデバッグもやっている感じに陥って、2度手間感ハンパなかったです。プロジェクトによってはちゃんと目的あってやってるのでしょうが、そのプロジェクトは単に伝統的なものだからという理由でやっているように見えた。
- 第十五章:時間に関する処理の負荷・見やすさ軽減のアドバイス。こちらは実際その業務になった時に改めてみる方が良いか。
まとめ
さすがに転職ドラフトさん登録のエンジニアが推奨する本ということが裏付けられる内容になっていました。変数の付け方は自分も適当な事が結構あるので見やすいコードを目指すのには良い書籍だと思います。
プログラミングを行っているエンジニアであれば是非一度目を通して頂きたい本となっております。