0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

リーダブルコードの感想などまとめ

Posted at

picture_large978-4-87311-565-8.jpeg

リーダブルコード とは?

リーダブルコードは、Dustin Boswell、Trevor Foucher 著、角 征典 訳 の書籍です。

エンジニアであれば、間違いなく読むべき書籍であるといえるでしょう。

今回は、そんなリーダブルコード(以下本書)を読み直しましたので、内容をまとめつつ感想をお伝えしたいと思います。

要点まとめ

  • コードは理解しやすくなければならない
  • コードは他の人が最短時間で理解できるように書かないといけない
  • 変数名、関数名に意味を込める
    • 具体的かつ伝わりやすくする
  • インデントを適切に配置する
  • 最善の名前とは、誤解されない名前である
    • 意図が正しく伝わるようにする
  • プログラミングとは、ほとんどがコードを読む時間である
  • いいコメントよりも、いいメソッド名を目指す
  • 「自分の考え」をコメントする
    • なぜこうしたのか、TODOなど
  • 要約するコメントも良い
  • 実例を示すコメントも良い
  • for文などの制御フローは要注意
    • 自然な並びを心がける
    • if (10 < length) よりも、
    • if (length > 10) の方が読みやすい
  • 行数を短くするよりも、他の人が理解するのにかかる時間を短くする
  • 早期リターンでネストを浅く保つ
  • 計算が長くなる場合は、途中結果を変数として保持すること
    • (ただし、通常は中間結果を保持するための変数は不要)
  • 変数のスコープは小さくする
    • グローバル変数はNG
    • クラス変数も歓迎されない
  • 変数は更新しないこと
    • イミュータブルにする
  • 処理は積極的にメソッドに切り出すこと
  • ひとつのコードはひとつの処理のみ行うこと
  • 複数のタスクを行っている場合は、分割すること
  • 実装したい処理を、言葉にしてみること
    • 言葉にすることで、理解しやすいコードになる
  • できるだけ短いコードにすること
    • 最も読みやすいコードは、何も書かれていないコードだ
  • コードは小さく保つこと
    • 小さいコードは変更しやすい
  • 未使用のコードを見つけたら削除すること
  • ライブラリに詳しくなること
    • 既存ライブラリで解決できないか調べること
  • 安心してテストを追加・変更できるよう、テストコードも読みやすくすること
  • テストも小さい方がよい
    • 小さなテストを複数パターン作る
  • 入力値は、最も単純な組み合わせをテストする
    • マイナスの値が欲しければ、「-1」を使う
    • -99998.7などという値は使わないこと
  • テストを容易にするため、下記のような実装は避けること
    • グローバル変数を使っている
    • 外部コンポーネントに依存している
    • コードが非決定的な動きをする
  • テストが容易なのは、以下のようなコードである
    • クラスが小さい
    • 内部状態を持たない
    • クラスや関数が1つのことをしている
    • 他のクラスに依存していない
    • インターフェースが明確である
  • 下記書籍を読もう!
    • 『Code Complete』
    • 『リファクタリング』
    • 『プログラミング作法』
    • 『達人プログラマー』
    • 『Clean Code』
    • 『JavaScript: The Good Parts』
    • 『Effective Java』
    • 『オブジェクト指向における再利用のためのデザインパターン』
    • 『珠玉のプログラミング』
    • 『ハイパフォーマンスWebサイト』

感想

普段の開発にすぐさま活かせるノウハウが詰まっており、大変勉強になる書籍だと思いました!

読みやすいコードを書く大切さと、どうやって読みやすく書くかが学べました。

自分自身の書いたコードでも、数ヶ月後見直して愕然とすることってありますよね。

「この人、何を考えてこんな複雑な実装をしたんだ?」みたいな。

命名については、ChatGPTなどAIの得意分野だと思うので、どんどん活用していきたいです。

実装したい処理を言葉にしてみる、というのは去年実際に試してみて、「わかりやすい!」との評価をいただくことができました:pray:

勧められている書籍はまだ読んでいないものもあるので、今年中に読みたいと思います。

コードは書くよりも読む時間のほうが長い、という言葉にはいつもハッとさせられます。

(ドキュメントについても同様かもしれませんね)

これからも、本書の内容を踏まえて開発を行っていきます!

最後まで見ていただきありがとうございました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?