こんにちは。
エンジニアとして働いていると、自分や他の人が以前書いたコードをリファクタリングする作業をすることがよくあります。
ゼロイチで作っているときは、スピードを重視して作ること多いです。
その結果、色々非効率な書き方であったり、修正のしづらいコードが書かれていることが多々あります。
これを直していく作業がリファクタリングです。
もちろん、ゼロイチの段階で綺麗なコードを書くのが最もいい方法ではありますが、スピードを重視したり、見通しが甘かったり、途中で色々機能の変更があったりなどするため、ゼロイチの段階で綺麗で完璧なコードを書くのは不可能です。
これはエンジニアであれば誰もが頷くかと思います。
リファクタリングの作業は、ゼロイチでごりごりとコードを書いていくよりも遥かに難易度が高いです。
プログラミングを学びたての人や、エンジニアになりたての人であれば、リファクタリングというのはかなり苦労すると思います。
リファクタリングをしていくためには、何が最適なのかを考えられる必要があります。
コードの書き方ももちろんですが、設計的な部分での最適解が見える必要があります。
これは本当に難しい作業です。
しかし、正しいリファクタリングが行われれば、そのコードの保守性はぐんと上がります。
もちろん実行時の速度も早くなるかと思います。
コードの保守性が上がるというのは、サービスを長く運営していく上では非常に大事です。
サービスの内容はどんどん変化していくと思いますが、綺麗なコードで書かれていれば、修正は比較的簡単に行えます。
経営陣は往往にしてリファクタリングの効果の大きさを過小評価しがちですが、エンジニア視点で言えばリファクタリングの効果は計り知れません。
そんなリファクタリングですが、エンジニアとして長く働いている人であっても苦手だという人をよく見かけます。
確かにリファクタリングの作業は非常に難しいです。
しかし、ちゃんとその方法を知っておけば、リファクタリングはそこまで難しくなくなります。
今回は、リファクタリングを学ぶためにおすすめの本を紹介していきます。
1, 『新装版 リファクタリング 既存のコードを安全に改善する』
まず最初におすすめしたい本が、「新装版 リファクタリング 既存のコードを安全に改善する」という本です。
「まず最初に」と書きましたが、基本的にリファクタリングのおすすめの本と言ったらこの本しかないです!笑
以前とは違い、最近のコードはほとんどオブジェクト指向で書かれていると思いますが、この本でも基本的にはオブジェクト指向のコードをいかにリファクタリングするのかが書かれています。
これまでプログラミングを勉強したことがない人がこの本をいきなり読むと間違いなく挫折すると思いますが、エンジニアとして働いている人であれば問題なく読み進めていけます。
リファクタリングをする上で大切な考え方はもちろんのこと、実際にコードが載っているので、リファクタリングの実際の方法をイメージしやすいです。
概念的な部分から実装の部分まで、全てが丁寧に書かれていて非常に分かりやすく、リファクタリングの勉強をするなら絶対に欠かせない一冊です。
「新装版 リファクタリング 既存のコードを安全に改善する」ではJava言語が使用されています。
ただ、Javaを触ったことがない人でも、理解するのはそんなに難しくありません。
もし不安なら、Qiitaの記事などでJavaの文法を軽く触れておくといいかもしれません。
リファクタリングをしていくならこの本は必読書ですし、本当に良著でおすすめです。
2, 『リーダブルコード』
続いておすすめしたいのが「リーダブルコード」です。
「リーダブルコード」の存在を知っていたら、「え? なんでリファクタリングなのにリーダブルコードなの?」と思う人もいるかと思います。笑
確かにリーダブルコードは直接リファクタリングとは関係がありません。
リーダブルコードの本の中に、リファクタリングという単語も出てきません。
しかし、実際にリファクタリングをしていく上で、「リーダブルコード」に書かれていることも非常に役に立ってきます。
メソッドや変数についての命名の部分や、大きなメソッドをできるだけ小さなメソッドに分解するという部分などは、まさにリファクタリングで必要となってくる部分です。
リーダブルコードは読みやすく保守性の高いコードの書き方が説明された、エンジニアのバイブル的存在の本ですが、これはまさにリファクタリングでも通用する考え方です。
先ほど紹介した本に比べ、「リーダブルコード」は少ない時間でも読めてしまいます。
本自体もかなり薄いです。
しかし、書かれていることは確かです。
リファクタリングという文脈からは少しずれてしまいましたが、「リーダブルコード」も合わせて読むことを個人的にはおすすめしたいです。