気ままに気ままのエンジニアブログ

定期的に得た知見を気ままに発信中

書籍"リーダブルコード" 第4部のまとめ

こんにちは。

土曜日の早朝から洗濯物を干すことで僕の休暇が始まります。

どうもハチマキです。

はじめに

業務で課題と感じる部分を解決するため、かの有名な「リーダブルコード」を読みました。
アウトプットとして、今回は最終部の第4部のまとめを書いていきます。

※4部では効果的で読みやすいテストの書き方、特定用途のデータ構文の設計と実装の検討について書かれております。

では、早速行きましょう。

本日の概要 : リーダブルコード第4部のまとめ

  • こんな方におすすめ(書籍"リーダブルコード"第1部まとめをご覧ください)
  • 第4部 選抜テーマ
    • テストの読みやすさ
    • 「分 / 時間カウンタ」を設計・実装する
    • 解説
  • 一言

第4部 選抜テーマ

テストの読みやすさ

鍵となる考え
  • 他のプログラマが安心してテストの追加や変更ができるように、テストコードを読みやすくする
    • 大切ではない詳細はユーザから隠し、大切な詳細は目立つようにする
  • コードを完全にテストする最も単純な入力値の組み合わせを選択しなければいけない
  • テストには最もキレイで単純な値を選ぶ
    • 完璧な入力値を1つ作るのではなく、小さなテストを複数作る方が、簡単で、効果的で読みやすい
まとめ
  • みんながテストを追加しやすくなるように、テストコードも読みやすさが大切
  • 本物のコードをテストしやすく設計すれば、コードの設計が全体的に改善できる
  • 新しいテストの追加や修正を簡単にすることが大切
  • 具体的に
    • テストのトップレベルはできるだけ簡潔にする
    • テストが失敗したらバグや修正がしやすいようなエラーメッセージを表示する
    • テストに有効な最も単純な入力値を使う
    • テスト関数に説明的な名前をつけて、何をテストしているのかを明らかにする

「分 / 時間カウンタ」を設計・実装する

まとめ
  • 素朴な解決から始める(課題を抽出する)
  • 設計を試みる
  • 複数の下位問題に分割し、問題解決方法を考える(最終的にMinuteHourCounterになるまでの手順)
    • ConveryorQueue 最大長のあるキュー。シフト可能で合計ちを保持する
    • TrailingBucketCounter 時間経過に伴ってConveryorQueueを移動する。また、一つの時間帯のカウントを任意の制度で保持する
    • MinuteHourCounter 2つのTrailingBucketCounterを保持する。1つは1分間のカウントで、もう1つは1時間のカウント

解説

自然に読みやすいコードを書けるようになるための3つのステップ
  • 実際にやる
    • これから書くコードは読みやすいコードで書いてみる
    • 仲間に読んでもらったりしながら自分で「気付ける」ようになる
  • 当たり前にする
    • 一時の頑張りだけでは読みやすいコードにはならないため、続けることが大事
    • 誰かが読みにくいコードを書いていたら指摘してみる
  • コードで伝える
    • 自分が手伝って、新しい仲間も読みやすいコードを書くことが当たり前になるようにする
    • 自分たちが書いているソフトウェアを用いて、どうすれば読みやすいコードになるのかを伝えていく

一言

リーダブルコードを通して、コードを読みやすくするためのテクニックはインプットできた。
次はアウトプットしまくって、当たり前に読みやすいコードを書けるようになるために、まずはステップ1の「実際にやる」を実践して行こうと思う。
そして、最終的には自ら伝えられるように、成長していきたいと思います。

                                            • -

これでリーダブルコードのまとめは終了です。
次は何読もうかなぁ。おすすめ書籍ありましたらぜひコメントで教えていただけると嬉しいです!

以上、ハチマキでした。