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
퇴근 후 1억이 거래되는 서비스 만들기 | 내가 AI를 사용하는 방법
maryang
2
500
モテるデスク環境
mozumasu
3
1.4k
Designing Repeatable Edits: The Architecture of . in Vim
satorunooshie
0
250
CSC509 Lecture 11
javiergs
PRO
0
290
CSC305 Lecture 14
javiergs
PRO
0
240
開発組織の戦略的な役割と 設計スキル向上の効果
masuda220
PRO
10
2.1k
「10分以内に機能を消せる状態」 の実現のためにやっていること
togishima
1
220
ドメイン駆動設計のエッセンス
masuda220
PRO
15
7.6k
AkarengaLT vol.38
hashimoto_kei
1
140
詳細の決定を遅らせつつ実装を早くする
shimabox
1
880
フロントエンド開発のためのブラウザ組み込みAI入門
masashi
7
3.7k
お前も Gemini CLI extensions を作らないか?
satohjohn
0
110
Featured
See All Featured
Building an army of robots
kneath
306
46k
The Cult of Friendly URLs
andyhume
79
6.7k
Practical Orchestrator
shlominoach
190
11k
Scaling GitHub
holman
463
140k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Rails Girls Zürich Keynote
gr2m
95
14k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
658
61k
Gamification - CAS2011
davidbonilla
81
5.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
Transcript
リファクタリング 既存のコードを安全に改善する 意図が伝わるコードの書き方
リファクタリングとは? • プログラムの振る舞い(仕様)を変えずに内部品質を向上させる作業 • 内部品質: 保守性、可読性等 • バグ修正ではない(リファクタリングとバグ修正は別で行う) • 実現方法:
カプセル化、関数化、名前の変更等
ロジックを関数化する目的とは? 1. 再利用性を高める(同じ処理を繰り返し書かない) 2. 可読性を上げる(行数を減らす) 3. 意図を明確にする(何をやっているかを読み手に伝える)
サンプルコード(リファクタリング前) ※ if文の条件が長くなると単純に読み辛く、理解しづらいという問題も つまりどういうことだってばよ?
サンプルコード(リファクタリング後) 曜日判定ロジックを 別関数に抽出 週末は割増料金になることをより明確に表現 ※ ユニットテストのしやすさも向上
関数命名のセオリー 「実装」と「意図」を分離する つまり「どうやって処理を行っているか」ではなく 「何をしているか」に着目して命名する × isDayOfWeekZeroOne() ◦ isWeekend()