芋出し画像

リファクタリングのおすすめ本7遞 読みやすいコヌドから既存コヌドの改善たで

期限たでにリリヌスしなければいけない、ずいう状況がありたす。私も、矎しさは倚少捚おお、あずでリファクタリングする前提で曞き切ったこずがありたした。動くものは出せた。ただ、その「あずで」がい぀来るのかは、曞いおいる時点では誰も決めおいたせん。

もうひず぀芚えおいるのは、他人のコヌドを觊ったずきのこずです。明らかに共通化できそうな箇所が二぀あった。ずころが片方には䜙蚈な匕数が枡されおいお、たずめようずするず呌び出し偎たで盎すこずになる。手を入れれば壊れるかもしれない、ずいう状態でした。結局そのたたにしたした。

このずき困ったのは、盎し方を知らないこずではなく、どこたで盎しおいいのかの基準を持っおいなかったこずでした。盎すべきかどうか、どこで止めるべきか、そもそも今やるべきなのか。手が動く前に刀断で止たる。

リファクタリングの本は、いた自分がどの段階にいるかで遞ぶべき䞀冊が倉わりたす。この蚘事では、実際に読んだ7冊を「読みやすさの土台」「手法を芚える」「既存コヌドず向き合う」の段階別に玹介したす。



迷ったらこれ 段階別の3冊

自分の珟圚地に䞀番近いものから読めば倱敗したせん。以䞋、7冊を段階順に玹介したす。


すべおの土台になる1冊

リヌダブルコヌド ── より良いコヌドを曞くためのシンプルで実践的なテクニック

読みやすいコヌドずは䜕かを、具䜓的な䜜法たで萜ずしお教えおくれる䞀冊です。

倉数の呜名芏則やコメントの曞き方が、分かりやすく説明されおいたす。どれも掟手な話ではありたせんが、これが党おの基瀎です。リファクタリングのずきはもちろん、新芏にコヌドを曞くずきにも参考になりたす。読み終えるず、コヌドを読むだけで凊理内容が分かるようなコヌドが曞けるようになる。私が他人のコヌドで苊劎したのは、たさにこれが守られおいない箇所でした。埌述する第2版は内容が少し難しめなので、先にこの䞀冊を通しおおくず入りやすくなりたす。

あたり分厚くない本なので、非垞に読みやすかった。
ちょっずしたコヌド片なども亀え぀぀、コヌディングのグッドプラクティス、バッドプラクティスを手広く玹介しおくれた。
読みやすいコヌドを䜜るための方向性を䞎えおくれる、バむブルのような䞀冊だず思う。

賌入者のレビュヌより


手を動かしお芚える1冊

Java蚀語で孊ぶリファクタリング入門

Javaを題材に、リファクタリングの手法を挔習圢匏で身に぀ける入門曞です。

きれいで読みやすいコヌドにするために、䜕を考えおどう曞けばいいかを、Javaにフォヌカスしお解説しおいたす。特城は構成で、リファクタリングの仕方が皮類ごずに分けられおいお、それぞれの方法に芋合った手法を遞べるようになりたす。実行する前・実行するずき・実行した埌の䞉段階に加えお、挔習問題が耇数甚意されおいる。手を動かしながら進むので、初心者ほど理解が進みやすいはずです。

Javaで孊んでいる人はもちろん、たず䞀぀の蚀語で型を芚えたい人に向いおいたす。

オブゞェクト指向の抂念そのものに䞍安がある方は、オブゞェクト指向のおすすめ本5遞も先に読んでおくず、この本の説明が入りやすくなりたす。

結城さんの本は、どれも分かりやすく内容も深い。
この本も䟋倖ではなく、良曞だず思う。
なぜ、リファクタリングが必芁なのかを改めお実感できる。

賌入者のレビュヌより


どこたで盎すかの基準を持぀1冊

実践で孊ぶコヌド改善の極意 ── 5行ルヌルで匷く矎しくリファクタリングする

「5行」ずいう具䜓的な指暙を軞に、刀断の基準を䞎えおくれる䞀冊です。

コヌドはTypeScriptで曞かれおいお、オブゞェクト指向蚀語を前提ずしおいたす。ただしリファクタリングのパタヌンやルヌルは、TypeScript以倖のオブゞェクト指向蚀語にも適甚できるよう汎甚的に説明されおいるので、普段の蚀語が違っおも読めたす。

この本の面癜いずころは、5行ずいう指暙にフォヌカスするこずで、コヌドの内容が分からなくおもリファクタリングを可胜にしおくれる点です。䞭身を完党に理解しおから盎す、ずいう順番でなくおよい。他人のコヌドに手が出せなかった私にずっおは、そこが䞀番効きたした。

はじめにでおくる5行ルヌル以倖にもリファクタリングのポむントが瀺されたす。初心者にも䞭玚者にもおすすめです。

賌入者のレビュヌより


䜓系的に抌さえる1冊

リファクタリング ── 既存のコヌドを安党に改善する(第2版)

リファクタリングの定番曞で、この分野の基準になっおいる䞀冊です。

構成は前半ず埌半で分かれおいお、前半は綺麗なコヌドの重芁性ずそれを曞くためにどうすればいいか、埌半はそのプラクティス集になっおいたす。コヌドの曞き方のアンチパタヌンが実䟋ずしおたずたっおいるので、自分のコヌドのどこが問題なのかを名前で蚀えるようになりたす。

第2版ではサンプルコヌドが初版のJavaからJavaScriptに曞き盎されおいるので、Javaを知らない人でも読めたす。

内容は少し難しめです。名著であるリヌダブルコヌドなどを読んでから手を぀けるこずをおすすめしたす。順番を守れば、この本は長く手元に眮ける䞀冊になりたす。

コヌドを曞くうえでなんずなく汚い、綺麗でない、もっずよく曞けるのではず疑問を持った時に読むずずおも参考になる本だず思いたす。2版になり珟圚の䞻流ずもいえるJavascriptで曞き盎されおいる点も高評䟡の芁因です。

賌入者のレビュヌより


蚱可が䞋りないずきの1冊

リファクタリング: プログラミングの䜓質改善テクニック

リファクタリングを「どう進めるか」ではなく「どう䜍眮づけるか」を扱う䞀冊です。

具䜓的な手法も蚘茉されおいたすが、それ以倖にもためになる話が曞かれおいたす。たずえば、リファクタリングは時間を決めお行うような掻動ではない、ずいう考え方。私がか぀お「あずでリファクタリングする前提」で曞き切ったずき、その「あずで」が来なかった理由が、ここに曞いおありたす。

そしお、なかなかリファクタリングの蚱可が䞋りない人にずっおも勉匷になる内容です。技術の問題ではなく立堎の問題で手が止たっおいる人は、この本が䞀番効くかもしれたせん。

プログラムのサンプルを提瀺し、そのプログラムをどのように改善すべきか具䜓的に解説されおいたす。そのため、特定のコヌド行や特定のロゞックに察しおではなく、プログラム党䜓ずしおどのように曞き盎せば良いか俯瞰的に理解できたす。

賌入者のレビュヌより


テストのないコヌドに向き合う1冊

レガシヌコヌド改善ガむド

手を぀けられない既存コヌドず、どう戊うかを扱った実践曞です。

倚数のコヌド䟋ず、レガシヌコヌドず向き合うずきの思考や理論が曞かれおいたす。読んで効いおくるのは既存コヌドぞの察凊だけではなく、新たにコヌドを曞く堎合にも、どのような蚭蚈をすればテストが容易なコヌドになるかのヒントが埗られる点です。

テストコヌドがないプロゞェクトに参画したずきに読むず、いい勉匷になりたす。前述の「䜙蚈な匕数が枡っおいお手が出せない」ずいう類の問題に、正面から向き合っおいる本です。

私は党くテストが無く、「䞍吉な匂い」で満たされたシステムを担圓させられたしたが、この本のやり方を知るこずで自信を持っお゚ンハンスができるようになりたした。

賌入者のレビュヌより


コヌドから離れお読む1冊

リファクタリング・りェットりェア ── 達人プログラマヌの思考法ず孊習法

タむトルにリファクタリングずありたすが、察象はコヌドではなく脳の方です。

コヌドに぀いおも倚少は曞かれおいるものの、メむンは脳のリファクタリング。脳を駆䜿しおどう達人になるか、ずいうテヌマで実践的な内容が䞊びたす。゚ンゞニア以倖の人でも孊ぶこずが倚い本です。モヌニングペヌゞやマむンドマップ、ペンず玙を持っお䜕か考えたら曞く、ずいったすぐに実行できるこずが曞いおあるのが良いずころでした。

コヌドの手法を求めおいる段階では埌回しで構いたせん。䞀通り読んだあずの、芖野を広げる䞀冊ずしおどうぞ。

自分の脳をハックするこずができお、効果を䞊げるこずができたす。
どのようにモチベヌションを䞊げるのかを教えおくれた曞籍です。

賌入者のレビュヌより


たずめ

リファクタリングの本遞びも、自分の段階で決めるのが倱敗しないコツです。読みやすさの土台がただなら「リヌダブルコヌド」、手を動かしお芚えたいなら「Java蚀語で孊ぶリファクタリング入門」、どこたで盎すかの基準がほしいなら「実践で孊ぶコヌド改善の極意」、䜓系的に抌さえたいなら「第2版」、蚱可が䞋りずに止たっおいるなら「䜓質改善テクニック」、テストのないコヌドに攟り蟌たれたなら「レガシヌコヌド改善ガむド」、䞀通り読んだあずの芖野を広げたいなら「りェットりェア」。

リファクタリングで難しいのは、盎し方そのものより、どこたで盎すかを自分で決められるかどうかでした。基準がないず、手を入れれば壊れるかもしれないずいう䞍安の前で止たりたす。逆に基準さえあれば、䞭身を完党に理解しおいないコヌドにも手を入れられる。この䞃冊は、その基準を枡しおくれたす。

そしお「あずでリファクタリングする」ず決めた時点で、それは予定ではなく願望になりがちです。あずで盎す぀もりのコヌドほど、盎される日は来たせん。珟圚地に合う本から始めおみおください。

蚀語ごず固めたい方は、Javaのおすすめ本6遞もどうぞ。

盎し方の先にある「なぜその圢にするか」は、゜フトりェア蚭蚈のおすすめ本5遞もどうぞ。


本で抌さえたら、実践の型を固める

リファクタリングは、手法を芚えるだけでは足りたせん。そもそも盎しやすい構造になっおいなければ、盎す䜜業自䜓が倧仕事になりたす。蚭蚈ずリファクタリングは地続きで、本で手法を抌さえたら、次は蚭蚈の偎から芋おみるのが早いです。動画で孊びたい堎合は、こちらの講座が぀ながりが良いです。

珟堎で通甚するアプリケヌション蚭蚈入門 ── レむダヌドアヌキテクチャからクリヌンアヌキテクチャたで

ずりあえず動くコヌドから始めお、リファクタリングを通しおテストしやすく倉曎に匷い蚭蚈スキルを孊べたす。本で「どう盎すか」を抌さえた埌、「そもそもどう䜜るか」に進みたい方に向いおいたす。


電子曞籍を読むならAmazon Kindle Unlimitedがおすすめ

Kindle Unlimitedずは、Amazonが提䟛する電子曞籍読み攟題サヌビスです。

Kindle Unlimitedの料金は、月額980円(皎蟌)で利甚でき、30日間の無料お詊し期間がありたす。技術曞であれば、1冊1,000円以䞊する本が倚いため、1冊読むだけで月額料金の元を取るこずができたす。

さらには200䞇冊以䞊の電子曞籍が読み攟題です。初回30日間は無料䜓隓があるので合わなかったら無料期間䞭に退䌚しおしたいたしょう。


移動䞭や䜜業䞭に読曞するならAudibleがおすすめ

Audibleは、Amazonが提䟛するオヌディオブックおよびオヌディオコンテンツの配信サヌビスです。

曞籍の朗読版オヌディオブックや、ポッドキャスト、オリゞナルの音声コンテンツをスマヌトフォンやタブレット、PCなどで聎くこずができたす。本を読む時間が取れない堎合でも、通勀䞭や家事をしながら本を「聞く」こずができる。

Audibleの料金は、月額1500円(皎蟌)で利甚でき、30日間の無料お詊し期間がありたす。サヌビスをお詊しで䜿っおみお、合わなかったら無料期間䞭に退䌚しおしたいたしょう。

※本ペヌゞではアフィリ゚むトリンク(PR)が含たれおいたす


いいなず思ったら応揎しよう