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
20k
refactoring
mazua
August 20, 2021
Tweet
Share
More Decks by mazua
See All by mazua
初めてのPHP.pdf
azuma
0
20k
Other Decks in Programming
See All in Programming
PostmanでAPIの動作確認が楽になった話
h455h1
0
180
OpenAPIを中心に考えるAPI開発入門 / Introduction to API Development with a Focus on OpenAPI
seike460
PRO
2
180
Sheets API使ってみた
toshi0383
2
160
PHPはいつから死んでいるかの調査
chiroruxx
2
420
PHP8.3の機能を振り返る / Review of PHP 8.3 features
seike460
PRO
1
120
VS Code をプロダクトにどう取り込むか
onomax
1
710
Try creating your own orderedmap
kazamori
1
190
Domain-Driven Transformation
hschwentner
2
1.5k
Fragment Composition of GraphQL
quramy
13
1.5k
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
youkidearitai
PRO
1
220
GitLab CI/CD で C#/WPFアプリケーションのテストとインストーラーのビルド・デプロイを自動化する
hacarus
0
300
敵対的ポイフル
futabato
0
130
Featured
See All Featured
Happy Clients
brianwarren
92
6.4k
Ruby is Unlike a Banana
tanoku
96
10k
Building Applications with DynamoDB
mza
88
5.6k
Testing 201, or: Great Expectations
jmmastey
30
6.4k
A Philosophy of Restraint
colly
197
16k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
323
20k
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.7k
The Power of CSS Pseudo Elements
geoffreycrofte
62
5k
The Cult of Friendly URLs
andyhume
74
5.7k
The Illustrated Children's Guide to Kubernetes
chrisshort
32
46k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
20
1.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
7
3.4k
Transcript
リファクタリング 既存のコードを安全に改善する 意図が伝わるコードの書き方
リファクタリングとは? • プログラムの振る舞い(仕様)を変えずに内部品質を向上させる作業 • 内部品質: 保守性、可読性等 • バグ修正ではない(リファクタリングとバグ修正は別で行う) • 実現方法:
カプセル化、関数化、名前の変更等
ロジックを関数化する目的とは? 1. 再利用性を高める(同じ処理を繰り返し書かない) 2. 可読性を上げる(行数を減らす) 3. 意図を明確にする(何をやっているかを読み手に伝える)
サンプルコード(リファクタリング前) ※ if文の条件が長くなると単純に読み辛く、理解しづらいという問題も つまりどういうことだってばよ?
サンプルコード(リファクタリング後) 曜日判定ロジックを 別関数に抽出 週末は割増料金になることをより明確に表現 ※ ユニットテストのしやすさも向上
関数命名のセオリー 「実装」と「意図」を分離する つまり「どうやって処理を行っているか」ではなく 「何をしているか」に着目して命名する × isDayOfWeekZeroOne() ◦ isWeekend()