Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
refactoring
mazua
August 20, 2021
Programming
1
15k
refactoring
mazua
August 20, 2021
Tweet
Share
More Decks by mazua
See All by mazua
初めてのPHP.pdf
azuma
0
15k
Other Decks in Programming
See All in Programming
GitHub Actions を導入した経緯
tamago3keran
1
420
Airflowはすごいぞ!
hankehly
0
370
Cybozu GoogleI/O 2022 LT会 - Input for all screens
jaewgwon
0
220
I/O Extended 2022 in Android ~ Whats new in Android development tools
pluu
0
520
Jakarta EE 10 - Feature by Feature with My Open Source Journey
ivargrimstad
0
2k
Amazon Aurora の v1 が EOL になるので 10 クラスタアップグレードして出てきたノウハウ
dekokun
0
840
実践エクストリームプログラミング / Extreme Programming in Practice
enk
1
350
個人開発でReact Native + Expo製アプリを作った話
ryonakae
1
440
Independently together: better developer experience & App performance
bcinarli
0
150
【Scrum Fest Osaka 2022】スクラムチームに放り込まれた若手エンジニアの皆さん、どのように技術のキャッチアップをしていくかイメージはついていますか?
miiiki
0
100
即、New Relic / New Relic NOW!
uzulla
0
270
設計ナイト2022 トランザクションスクリプト
shinpeim
11
2k
Featured
See All Featured
A Tale of Four Properties
chriscoyier
149
21k
Infographics Made Easy
chrislema
233
17k
The Straight Up "How To Draw Better" Workshop
denniskardys
225
120k
Faster Mobile Websites
deanohume
294
28k
10 Git Anti Patterns You Should be Aware of
lemiorhan
638
52k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
15k
How GitHub (no longer) Works
holman
296
140k
Become a Pro
speakerdeck
PRO
3
830
Navigating Team Friction
lara
175
11k
Build The Right Thing And Hit Your Dates
maggiecrowley
19
1.2k
The Language of Interfaces
destraynor
148
20k
Web development in the modern age
philhawksworth
197
9.3k
Transcript
リファクタリング 既存のコードを安全に改善する 意図が伝わるコードの書き方
リファクタリングとは? • プログラムの振る舞い(仕様)を変えずに内部品質を向上させる作業 • 内部品質: 保守性、可読性等 • バグ修正ではない(リファクタリングとバグ修正は別で行う) • 実現方法:
カプセル化、関数化、名前の変更等
ロジックを関数化する目的とは? 1. 再利用性を高める(同じ処理を繰り返し書かない) 2. 可読性を上げる(行数を減らす) 3. 意図を明確にする(何をやっているかを読み手に伝える)
サンプルコード(リファクタリング前) ※ if文の条件が長くなると単純に読み辛く、理解しづらいという問題も つまりどういうことだってばよ?
サンプルコード(リファクタリング後) 曜日判定ロジックを 別関数に抽出 週末は割増料金になることをより明確に表現 ※ ユニットテストのしやすさも向上
関数命名のセオリー 「実装」と「意図」を分離する つまり「どうやって処理を行っているか」ではなく 「何をしているか」に着目して命名する × isDayOfWeekZeroOne() ◦ isWeekend()