Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
refactoring
Search
mazua
August 20, 2021
Programming
1
21k
refactoring
mazua
August 20, 2021
Tweet
Share
More Decks by mazua
See All by mazua
初めてのPHP.pdf
azuma
0
21k
Other Decks in Programming
See All in Programming
クラス設計の手順
akikogoto
0
130
AI時代のリアーキテクチャ戦略 / Re-architecture Strategy in the AI Era
dachi023
0
150
JAWS DAYS 2025 re_Cheers: WEB
komakichi
0
130
最速Green Tea 🍵 Garbage Collector
kuro_kurorrr
1
160
ruby.wasmとWebSocketで遊ぼう!
lnit
0
120
監視 やばい
syossan27
12
10k
VibeCoding時代のエンジニアリング
daisuketakeda
0
270
Live Coding: Migrating an Application to Signals
manfredsteyer
PRO
0
120
知識0からカンファレンスやってみたらこうなった!
syossan27
5
300
Rubyの!メソッドをちゃんと理解する
alstrocrack
2
380
Cursor/Devin全社導入の理想と現実
saitoryc
29
22k
MySQL初心者が311個のカラムにNot NULL制約を追加していってALTER TABLEについて学んだ話
hatsu38
2
150
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
590
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
KATA
mclloyd
29
14k
Building an army of robots
kneath
305
45k
Producing Creativity
orderedlist
PRO
344
40k
A designer walks into a library…
pauljervisheath
205
24k
Practical Orchestrator
shlominoach
187
11k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
13
850
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
A Tale of Four Properties
chriscoyier
159
23k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Transcript
リファクタリング 既存のコードを安全に改善する 意図が伝わるコードの書き方
リファクタリングとは? • プログラムの振る舞い(仕様)を変えずに内部品質を向上させる作業 • 内部品質: 保守性、可読性等 • バグ修正ではない(リファクタリングとバグ修正は別で行う) • 実現方法:
カプセル化、関数化、名前の変更等
ロジックを関数化する目的とは? 1. 再利用性を高める(同じ処理を繰り返し書かない) 2. 可読性を上げる(行数を減らす) 3. 意図を明確にする(何をやっているかを読み手に伝える)
サンプルコード(リファクタリング前) ※ if文の条件が長くなると単純に読み辛く、理解しづらいという問題も つまりどういうことだってばよ?
サンプルコード(リファクタリング後) 曜日判定ロジックを 別関数に抽出 週末は割増料金になることをより明確に表現 ※ ユニットテストのしやすさも向上
関数命名のセオリー 「実装」と「意図」を分離する つまり「どうやって処理を行っているか」ではなく 「何をしているか」に着目して命名する × isDayOfWeekZeroOne() ◦ isWeekend()