リーダブルコードを読んだのでまとめた
リーダブルコードを読んだのでメモをしておく
全体
終始「読み手が理解しやすいコード」を書くために必要な考え方やテクニックについて書かれていたようにおもう。各部、各章の内容は最終的には「読み手が理解しやすいコード」という目的を達成することにつながるものだったように思えた。なのでこの本を読む際はこのテーマを捉えた上で読むことが全体の理解にとても役立つし、それゆえ 1 章のタイトルが「理解しやすいコード」だったのだと思う。
読んでみての感想
以下各部ごとの感想を書いていく。目次はこちら。
https://www.oreilly.co.jp/books/9784873115658/#toc
第 1 部
「表面上の改善」というタイトルであり、主に命名やコメントについてどのようにして決め、書いていけば「理解しやすい」コードになるかという内容であった。 自分は普段から変数名や関数名、あるいはコメントについて重要視しているし結構悩む。何度もコードを読み返しては「この命名はそれを過不足なく表しているか?このコメントで伝わるか?」という思考を巡らせている。少なくとも命名やコメントに対して無頓着という状態にはありたくないという気持ちはあると自負している。一方で命名やコメントを決める手順について、自分の中で再現性や決まった形を持てているかと言われたら、そういうものはなくその都度決めてきた気がする。要はちゃんと考えたことがなかった。そういう自分に対して、この第 1 部は一種の言語化された命名やコメントの考え方を与えてくれた気がする。各章で少しコメントをすると、 2.3 の「抽象的な名前よりも具体的な名前を使う」は、自分が普段から行っていることは「抽象的ではなく具体的な変数名を探している」という理解を与えてくれた。またコメントについて書かれた 5 章は、「コードからすぐにわかることをコメントに書かない、優れたコメントよりも名前の方が大切」「自分の考えをコメントに含める、コードの欠陥にコメントをつける」などの考えを与えてくれ、常により詳細にもれなくコメントしようとしてきた自分のコメントへのスタンスについて改善点があることを教えてくれた。
第 2 部
「ループとロジックの単純化」では主にループ関数の扱い方、関数の切り出しや共通化に関する内容だった。 自分は関数に切り出したり共通化するのは割と好きなタイプなので、この章ではどんなことを学べるか少し楽しみにして読み始めた。共感できる、おそらく実践できていると感じたのは説明変数や要約変数の使用、ド・モルガンの法則の使用あたりだった。好きだし意識も強く持てている部分だと思うので今後も継続したい。一方、これはやってしまっている時があるかもと感じたのが、変数の書き換えについてだった。9.4 で「変数を操作する場所が増えると、現在値の判断が難しくなる」という考え方が紹介されている。イミュータブルなコードを書けているかどうか、普段から意識したいと思ったし、意識する以外に、イミュータブルを思想にもつ言語などを少し触ってみたりするのもありだなと思った。
第 3 部
「コードの再構成」というタイトルであった。個人的には一番この章が印象深く、読むのに時間もかかった。 特に面白いなと感じたのが「プロジェクト固有のコードから汎用コードを分離する」という考え方だった。紹介されている具体例からこの考え方がどういうことを差しているのかはある程度わかったし、無意識のうち(とわかった)ではあるが自分もコードを書いているときにやってはいることではあると思った。一方でそれが「プロジェクト固有のコードから汎用コードを分離する」ことだと気づいてはいなかったし、自分の場合はその精度もまだまだ荒いことが多いなと具体例を読みながら感じた。加えて、まだ完全な言語化はできていないのだが、なんとなくこういう考え方は OSS のコードが綺麗に体現していることが多いのでは?と思った。10.7 の「必要に応じでインターフェースを整える」のお話はまさにそんな感じがした。
第 4 部
テストと特定の条件を題材にこれまでの話を実践で見ていった。テストについてもこの本で紹介されている「理解しやすい」という概念は必要であると解説されていた。特に「テストが書きやすいコードを書くようにすると、理解しやすい良いコードを書くことになる」というお話は、職場でもよく聞く話だった。まだその点について完全な納得をできていない(反対しているわけではなく「テストがしやすいコードを書けた!このコードはわかりやすい!」という体験をしていない)が、今後徐々に理解できたらと思う。 二つ目の特定の条件が結構むずかしく読むのに苦労した。しかしこの本で紹介されていた知識が実際の現場で適用されていく様をシュミレートできた気がしたのでこれはこれでよかった。だたもう 2,3 回読まないといけなさそうな読み応えではあった。
ネクストアクション
- 少しの間、変数名を決めたりコメントを書く際はリーダブルコードの第 1 部を片手に行なってみる
- イミュータブルを思想にもつ言語をもっと触ってみる(入門レベルくらいでしか経験がない)
- 今書いているコードが「プロダクト固有」が「汎用的」を考えてみる
- 4 章はどこかでもう一度読んでみる
まとめのまとめ
常日頃リーダブルであるかを問いながらコードを読んだり書いたりするぞ