Ryo’s blog

42にいるソムリエのゆるふわブログ

【感想】達人プログラマー(第2版)を読んだ

ITエンジニア本大賞2022の技術書部門大賞を受賞していたので、興味が出て読んでみました。 感想としては、評判通りの名著だなと。 生産性を向上させ、効率的に仕事を進めていく上での大切な心構えがまとまっていました。 100個ものTipsがありますが、一つ一つが簡潔にまとめられているため、好きなタイミングに読めるのもよかったです。 今回は特に印象的だったTipsを3つほど、感想とともにまとめてみました。

Tip 15 DRY Don’t Repeat Yourself(繰り返しを避けること)

普段Railsで開発しているので、DRYという言葉はよく聞きます。自分の認識では「プログラム中にソースコードのコピペをしてはいけない。二重化は避けろ。」という程度のものでした。 しかし、このTipsから自分は、DRY原則の本質を理解していなかったということに気がつきました。それは、 避けるべきはコードの二重化ではなく、知識の二重化である ということです。

例えば以下のような、処理内容が重複しているコードでも、知識の二重化ではありません。

bool validate_age(int value) {
    return validate_min_integer(value, 0);
}

bool validate_quantity(int value) {
    return validate_min_integer(value, 0);
}

これは、あくまで2つのものごとが同じ規則を有しているだけであり、それは偶然にすぎないからです。

これまで同じような処理は1つのメソッドにまとめればいいんだなくらいに考えていたことを反省するとともに、普段何気無く使っている言葉も、本質的に理解しているのかをしっかり確認すべきだなと思いました。 今後はデザインパターンや設計思想など、なんとなくで使ってしまいそうな言葉もしっかり理解した上で使うようにしていきたいです。

Tip 27 エディターに熟達すること

このTipsでは、エディターを使いこなすことで、生産性を高められる ということを学びました。 当たり前のように感じるかもしれませんが、日々のコーディングで、何度もマウスやトラックパッドを使うことはないでしょうか。 もしあるのであれば、それが、エディターの機能によって、コマンドラインで行えないか調べてみるといいかもしれません。

ちょっとでも、面倒だと感じることは、エディターの機能を最大限に活用することで、無駄な時間を削減していくことができます。 日常的に、繰り返す動作については、なるべく効率的に、かつスムーズに行える習慣を取り入れるべきだと思いました。

ショートカットや拡張機能などは、使わなくても支障をきたすことはありません。 そのため後回しにしがちでしたが、今後は積極的に活用し、それを無意識に使えるようにしていきたい思います。

Tip 66 テストとはバグを見つけることではない

テストを書くことで、そのコードが要件を満たしているのか確認することができる。 実はテストにはそれ以上のメリットがあるということをこのTipsから学びました。

それは、テストを実行しているときよりも、テストについて考えて、記述しているときの方が大切 だということです。 その考えは、コードを書く段階から重要になってきます。

テストがしやすいコードを書くためには、結合度を下げる必要があります。 境界条件やエラー条件を考えておけば、関数の構造もすっきりさせることができるはずです。

新しく実装するときは、必ずその機能とセットでテストについても考えながらコーディングしてみようと思いました。 それによってコードの質を向上させていきたいです。

さいごに

今年読んだ本の中ではダントツでよかったです。 今後も達人プログラマーの考えを取り入れていくように、読み返してみようと思います。 コーディングや設計、開発手法、ユーザーに良いサービスを提供するための考えなど数多くのTipsがあるので、興味ある方はぜひ読んでみてください。