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
国漢文混用体からHolloまで
minhee
1
160
SQL Server ベクトル検索
odashinsuke
0
160
Chrome Extension Techniques from Hell
moznion
1
160
php-fpm がリクエスト処理する仕組みを追う / Tracing-How-php-fpm-Handles-Requests
shin1x1
5
2.9k
Defying Front-End Inertia: Inertia.js on Rails
skryukov
0
460
Being an ethical software engineer
xgouchet
PRO
0
200
Preact、HooksとSignalsの両立 / Preact: Harmonizing Hooks and Signals
ssssota
1
1.3k
スモールスタートで始めるためのLambda×モノリス
akihisaikeda
2
130
SwiftUI API Design Lessons
niw
1
260
技術選定を未来に繋いで活用していく
sakito
3
100
アーキテクトと美学 / Architecture and Aesthetics
nrslib
12
3.3k
プロダクト横断分析に役立つ、事前集計しないサマリーテーブル設計
hanon52_
2
360
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
Optimizing for Happiness
mojombo
377
70k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
How STYLIGHT went responsive
nonsquared
99
5.5k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Building Applications with DynamoDB
mza
94
6.3k
Done Done
chrislema
183
16k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Into the Great Unknown - MozCon
thekraken
37
1.7k
Automating Front-end Workflow
addyosmani
1369
200k
A better future with KSS
kneath
239
17k
Transcript
リファクタリング 既存のコードを安全に改善する 意図が伝わるコードの書き方
リファクタリングとは? • プログラムの振る舞い(仕様)を変えずに内部品質を向上させる作業 • 内部品質: 保守性、可読性等 • バグ修正ではない(リファクタリングとバグ修正は別で行う) • 実現方法:
カプセル化、関数化、名前の変更等
ロジックを関数化する目的とは? 1. 再利用性を高める(同じ処理を繰り返し書かない) 2. 可読性を上げる(行数を減らす) 3. 意図を明確にする(何をやっているかを読み手に伝える)
サンプルコード(リファクタリング前) ※ if文の条件が長くなると単純に読み辛く、理解しづらいという問題も つまりどういうことだってばよ?
サンプルコード(リファクタリング後) 曜日判定ロジックを 別関数に抽出 週末は割増料金になることをより明確に表現 ※ ユニットテストのしやすさも向上
関数命名のセオリー 「実装」と「意図」を分離する つまり「どうやって処理を行っているか」ではなく 「何をしているか」に着目して命名する × isDayOfWeekZeroOne() ◦ isWeekend()