皆さんこんにちは。 虎の穴ラボのY.Fです。
何度か本ブログでも書かれていますが、虎の穴ラボでは福利として年間5万円分の技術書補助が利用できます。
今回は、技術書補助で購入した『リファクタリング 第2版』を読んだので感想を書いてみたいと思います。
本の詳細はこちら
読んだ理由
端的に言ってしまえばもっと良いプログラムを書きたいと思ったからです。
エンジニアとして働いているので日々プログラムを書いていますが、うまく行ったなと思うこともあれば、後々考えるともっとよくかけたなと思うこともあります。
また、他人が書いたソースをレビューする機会も多いですが、そのような場で指摘する内容に説得力をもたせたり、自分の中でより確固たる基準がほしいと思ったのも理由にあります。
リファクタリングの本なので、すでに出来上がっているプログラムを改善する本ではありますが、実際の改善手段や内容を知ることで、はじめからより良いプログラムがかけるのでは?と考えました。
目次
目次
第2版翻訳にあたって 初版の「本書に寄せて」 はじめに Chap.1 リファクタリング-最初の例 Chap.2 リファクタリングの原則 Chap.3 コードの不吉な臭い Chap.4 テストの構築 Chap.5 カタログの紹介 Chap.6 リファクタリングはじめの一歩 Chap.7 カプセル化 Chap.8 特性の移動 Chap.9 データの再編成 Chap.10 条件記述の単純化 Chap.11 APIのリファクタリング Chap.12 継承の取り扱い 文献リスト 訳者あとがき 索引
全体の感想
全体を読んで最も大事なのは、最初のChap.1〜Chap.4だと思いました。この4章を読むだけでそもそもなぜリファクタリングが必要なのかと、大体の手順、どういうコードが良くないとされるコードなのか知ることが出来ます。
特に個人的に読んでいて意識が変わりそうだなと思ったのが第1章でした。ここでは、具体的なソースコードを例にリファクタリングの実際のやり方が説明されています。この章を読むだけでも実際のリファクタリング時の考え方や、ソースの変更方法の全体的な指針について学ぶことが出来ます。
また、どういったソースが良くないソースなのかということを知る意味ではChap.3は大事かなと思います。いわゆるコードスメルの典型パターンが紹介されています。この章を読むことで、自分が書いてきたコードを振り返るとともに、今後どういったソースが良くないとされるのかの基準に出来ます。
Chap.5以降は基本的にはリファクタリグのパターンの紹介が最後まで続きます。全部読むのもいいとは思いますが、必要な時やもっと良い書き方がないかな?と思った時に適宜読むのが良いのかなと思いました。
Chap.1 リファクタリング-最初の例
全体の感想でも書いたとおり、実際のソースを元にリファクタリングの考え方、具体的なやり方について説明されています。
後の章とは異なり、ここではテストの実行のようなものまで丁寧に説明されているので、冗長に感じる人も居るかもしれません。
一方で、分具体的なリファクタリングの根拠などは納得しやすいのかなと思いました。
Chap.2 リファクタリングの原則
こちらはリファクタリングの歴史的な経緯や、なぜリファクタリングが必要なのかなどの概念についての説明の章になっています。
面白いと思ったのが、いつでもリファクタリングすることを推奨しているわけでは無いという点です。大事なのはリファクタリングする必要があるような新機能の追加や、コード改修が発生した時にリファクタリングを行えるようにすることで、良くないコードは何でも直せば良いといったものではないということが書かれていたりします。また、リファクタリングが必要になったその時のためにテストを書いておくことの重要性などが書かれています。
また、この章ではYagniの法則についても触れられています。要は必要なものは必要な時に作ろうということですが、前職でも不必要に実装された機能などで苦しんだことがあるので自分がプログラミングするときの自戒としておきたいです。
Chap.3 コードの不吉な臭い
この章はいわゆるコードスメルというものの紹介です。良くないコードのカタログとして使えると思います。
中には、『不可思議な名前』のように意識しないとやってしまいがちなものもあるので一通り目を通しておくのをおすすめします。
個人的には一番最後に出てくる『コメント』については考え直しました。 全くコメント無いよりはあったほうが良いと思っていますが、ここで言われているのは、長い丁寧なコメントはソースコード自体がわかりにくいことを隠す結果になっている場合があるということです。 この点も自分がコメントしたくなった時に振り返るポイントにしていきたいです。
Chap.5以降
Chap.5以降は基本的に具体的なリファクタリング方法の紹介の羅列になります。目次を見ていただくとわかるように、大きな項目毎に紹介しているので、自分がその時その時で必要としている手法を取捨選択するのが良いのかなと思います。
もちろん全部読んでもいいと思います。自分は一通り読みましたが、良い知見になったかなと思いました。
まとめ
リファクタリングの本ですが、実際の言葉どおりのリファクタリングにはもちろん、コードの書き方に悩んでいる人にもおすすめできる一冊だと思います。
特に、今までの書き方を改善したいという思いを持っている方にはおすすめです!
P.S
虎の穴ラボ主催LT会開催!
虎の穴ラボ主催のオンラインLTイベントを 8/26(水)19:30〜 開催します!
今回もフリーテーマとなっており、ITに関連する内容であれば、何でも大歓迎ですので、初心者の方も練習の場としてお気軽にご参加ください!
connpassにて参加受付中です!
9月採用説明会開催決定!
ちょっと先ですが9/11に採用説明会を実施します。ちょっと話を聞いてみたい人など、どなたでもぜひ参加してみてください! yumenosora.connpass.com
その他採用情報
虎の穴ラボでの開発に少しでも興味を持っていただけた方は、採用説明会やカジュアル面談という場でもっと深くお話しすることもできます。ぜひお気軽に申し込みいただければ幸いです。
カジュアル面談では虎の穴ラボのエンジニアが、開発プロセスの内容であったり、「今期何見ました?」といったオタクトークから業務の話まで何でもお応えします。
カジュアル面談や採用情報はこちらをご確認ください。
yumenosora.co.jp