見出し画像

【読書】「リーダブルコード」を久しぶりに読んでみた感想

はじめに

今回はリーダブルコードを久しぶりに読んだ感想について書きたいと思います。
リーダブルコードは大学時代のときに読んだことがありました。最近PDFで購入して久しぶりに読んでみると、昔はピンとこないことについてより理解ができるようになっていました。
読んでみた感想について書きたいと思います。

理解しやすいコード

  • コードは他の人が最短時間で理解できるように書かなければいけない

  • 読んで理解できる時間を短くするためなら、コードは長くて良い

読みやすいコードを書くことは、可読性を上げるうえでも重要です。自分がコードを書くより、他の人がコードを見る時間が長いことを考えると、読みやすいコードを書くために時間をかけてもいいと思います。
学生の頃はそこまで気にしておらず、変数名にtmpとかaなどの意味がわかりにくい名前を使っていました。最近では、できるだけ英語の意味を調べて変数名もつけるようにしています。

名前に情報を詰め込む

  • 一見正しそうな変数名でも情報が足りないことがある(get, sizeなど)

  • tmp, itなどの汎用的な名前の変数はできるだけ使わない

  • 名前に情報を追加する

変数名をしっかり命名することで、処理の間違いに気づくことができます。コードを見たときに、何をしているかもわかりやすくなるので命名の重要性は高いです。
また、時間の単位などの単位を変数名につけるとより具体的に内容を表現することができます。読むときに必要な情報はすべて名前に入れるようにします。

誤解されない名前

  • 他の意味と間違えられない名前をつける、誤解がないかチェックする

  • 複数の名前を検討して、最終的に決める

誤解されない名前をつけることで、バグの混入を防ぐことができます。名前が誤解されるようなメソッドを使った場合、コードを見たとき一見正しそうに見えてもバグが発生していて、かつ発見しにくいものになってしまいます。
またメソッド名の意味に対して期待している結果が得られない命名について指摘もされたことがあるので、そのあたりも踏まえて命名していきたいと思います。

美しさ

  • 一貫性をもたせる

コードを書くときはインデントや、波括弧の位置、段落分けなど、一貫性をもたせることが大切です。複数の書き方が混ざったコードは読みづらくなるからです。
コード規約が無いプロジェクトもあったのですが、もし新規でプロジェクトを始める場合は、規約などをしっかり作っておくとレビューを行うときも楽になると思いました。(またエディタの設定で規約を強制する)

コメントすべきことを知る

  • コメントに自分の考えを書く

  • 質問されそうなことをコメントに残す

コードを書いているときの感想をコメントに残すことで、リファクタリングで見直すときの目印にもなります。
逆にコードから読み取れることは、コメントに書く必要がありません。処理をそのままコメントで残すようなことがあったので、できるだけコードのみで内容を表現することが大切だと思いました。
またあらためてコードを読んでみて、疑問に思いそうなところにコメントを書いていこうかと思います。

無関係な下位問題を抽出する

  • 関数内の無関係な下位問題を別関数にする

大きな問題を小さな問題に分割することで、可読性や保守性が向上します。関数内の処理で切り出せる箇所がある場合は関数として切り出します。処理の流れを1つの関数内にそのまま書きたくなるときがありますが、書いたあとに見直して切り出せる箇所は無いか探したいと思います。これにより、関数が大きくなりすぎず可読性が向上したり、関数の保守性が向上します。

一度に一つのことを

  • 一度に一つのタスクを行う

読みにくいコードは中の処理を別関数などに分割することができる場合があります。分割するためにも、どのように分割するか、どれくらい分割するかを考えることが必要だと思います。

コードに思いを込める

  • コードを言葉にして、何をしようとしているか知る

  • 解決策を言葉で説明する

コードを言葉にすることで、より処理のイメージが湧き、自然なコードになっていきます。頭の中だけで考えてそのままコードを書くことも多かったので、処理を言葉で書いてみて、処理を書いたり、話したりしてみようと思います。

短いコードを書く

  • 必要ないコードは実装しない

過剰な機能や不要な機能は実装しないようにします。規模に応じて必要な仕様を決めたり、実装したりします。標準ライブラリは、よく使用するものは知っているのですが、あまり知らないものもあると思うので何があるか今一度調べてみようと思いました。

おわりに

今回はリーダブルコードを読んだ感想を書いていきました。
昔読んだときに比べて、より本の内容を理解することができるようになっていました。もっと読み込んで、今後開発を行うときはこれらをできるだけ実行できるようにしていけたら良いなと思います。


この記事が気に入ったらサポートをしてみませんか?