kuwana-kbの開発/学習ブログ

プログラミング、クラウドインフラのWeb開発/学習ブログ

「リーダブルコード」 書評

こんばんは、kuwana-kbです。
この1ヶ月間Goの学習をしていまして、ある程度すらすらと書けるようになってきたかな〜と感じています。
ただ、「自分の書くコードが他者からみるとどうなのか…?」という部分が気になっていまして、 そんな悩みを解決すべく「リーダブルコード」を読んでみました。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

ざっくりと3行でいうと

 * コードの「読みやすさの基本定理」を教えてくれる本
 * 技術書の中ではとても読みやすい
 * 身につけるのはそう簡単ではなく、「リーダブルコード」とは長い付き合いになりそう

この本の紹介

この本は、読みやすいコードとは何か?実現するためにどういう技法があるか?を解説した本です。解説の対象となるのは変数/関数の名前といった表面的な部分からコード全体の設計に至るまで、と多角的に読みさすさに関して言及しています。

多くのエンジニアが読んでいる人気の書籍のようです。社内SNSで「エンジニアになりたての頃に読んでおくべき本あります?」と質問したところ、この「リーダブルコード」が一番人気でした。

では、次に各部のざっくりとした紹介です。

第一部 表面上の改善

まずは簡単に実践可能な、コードの表面上の改善から話は始まります。 識別子の適切な命名や優れたコメントを書くことで、コードの読みやすさを改善していく方法の話がメインです。 構造的な変更を含まないため、コード改善のとっかかりとして始めやすい技法だと思いました。

第二部 ループとロジックの単純化

次はコードを動かすための制御フロー・論理式・変数についてのお話です。 なかでも、以下の技法はすぐに取り入れたいと思いました。 ・「論理式を書く順番は変動値<固定値にする(口語的で読みやすいため)」 ・「ネストを避けるために直線的なコードにする」

第三部 コードの再構成

ここからは「コードの再構成」ということで、よりマクロな話になります。 具体的にはそのコードの主目的を定義して、処理の中で無関係なコードを抽出して別の関数にするといった技法です。 例えば、URLを生成する関数において、正規表現を行う処理は別の関数としてまとめる、といった感じ。 無関係な処理かどうかを識別して、適切な粒度で汎用化する必要があるので体得するには時間がかかりそうな印象を受けました。

第四部 選抜テーマ

この部では、これまでの部で解説された技法を以下のテーマに適用する過程を紹介してくれます。

  • 「テストと読みやすさ」
  • 「『分/時間カウンタ』を設計・実装する」

技法はわかったけど実際どういう基準で適用するの?という疑問点が解消されるでしょう。

この本のポイント

1.カジュアルで読みやすい

これまで読んだ技術書の中でかなり読みやすい方だったと思います。 個人的に技術書というと表現が堅く、腰を据えて読むものという印象がありますが、 本書は読者に優しく語りかけるような語り口で、かつコミカルな挿絵もありスイスイと読み進められました。 内容も200ページと長すぎず、2日あれば読み終えられるような長さだったのが良かったです。

2.読むに易く、行うに難し

読みやすいのは良いことなんですが、本書で解説されている技法を身につけるのはそう簡単ではないとも感じました。 例えば言語の技術書であれば、1ページ毎に「読む→サンプルコード書く→応用してオリジナルで書く」といった形で実践していけば、本を読み終わる頃にはある程度力がつきます。 しかし、本書は読みやすい一方で実践の場は自分で見つけないといけません。 そして、以下のツイートのとおり結構難易度が高いと思います。

読んだはいいけど結局身についていない、という状態に陥りやすそうな印象を受けました。

3.読みやすいコードを身につけるには

本書では様々な技法が紹介されますが、根本的には 「このコードは他の人が理解できるか?」 を自問し続けることが何よりも大切だと感じました。

なので、「実装すべき機能のコードを書き上げられた!すぐにコミット!」ではなく、 「コミットの前に一度読み直してみよう」と、読み手の視点になってコードを見直す習慣を付ける所から始めるのがよいのかなと。 そして、もし見直す中で理解に詰まるコードがあったら、この「リーダブルコード」を手にとって適応できる技法がないか探してみる。

そういった日々の積み重ねによって、ようやく読みやすいコードが身につくのではないかと感じました。

まとめ

「リーダブルコード」を通じて読みやすいコードとはなにかを具体的にイメージできるようになりました。 しかし、本書を読み終えただけでは読みやすいコードを書くためのスタート地点にたったに過ぎないでしょう。 実際に読みやすいコードを自分で書けるようなるには、本書を読むだけではなく「実践して他者からフィードバックをもらう」を繰り返す必要があると感じています。

ということで、読みやすいコードを身につけるため、今後も「リーダブルコード」にはお世話になりそうです。