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
AWSのLambdaで PHPを動かす選択肢
rinchoku
2
390
DMMオンラインサロンアプリのSwift化
hayatan
0
200
Асинхронность неизбежна: как мы проектировали сервис уведомлений
lamodatech
0
1.4k
Fixstars高速化コンテスト2024準優勝解法
eijirou
0
190
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
soi013
0
370
traP の部内 ISUCON とそれを支えるポータル / PISCON Portal
ikura_hamu
0
210
PicoRubyと暮らす、シェアハウスハック
ryosk7
0
240
良いユニットテストを書こう
mototakatsu
13
3.6k
いりゃあせ、PHPカンファレンス名古屋2025 / Welcome to PHP Conference Nagoya 2025
ttskch
1
210
アクターシステムに頼らずEvent Sourcingする方法について
j5ik2o
6
710
各クラウドサービスにおける.NETの対応と見解
ymd65536
0
250
カンファレンス動画鑑賞会のススメ / Osaka.swift #1
hironytic
0
180
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
244
12k
Bash Introduction
62gerente
610
210k
Music & Morning Musume
bryan
46
6.3k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.6k
A better future with KSS
kneath
238
17k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Automating Front-end Workflow
addyosmani
1366
200k
Become a Pro
speakerdeck
PRO
26
5.1k
Building an army of robots
kneath
302
45k
We Have a Design System, Now What?
morganepeng
51
7.3k
Unsuck your backbone
ammeep
669
57k
Transcript
リファクタリング 既存のコードを安全に改善する 意図が伝わるコードの書き方
リファクタリングとは? • プログラムの振る舞い(仕様)を変えずに内部品質を向上させる作業 • 内部品質: 保守性、可読性等 • バグ修正ではない(リファクタリングとバグ修正は別で行う) • 実現方法:
カプセル化、関数化、名前の変更等
ロジックを関数化する目的とは? 1. 再利用性を高める(同じ処理を繰り返し書かない) 2. 可読性を上げる(行数を減らす) 3. 意図を明確にする(何をやっているかを読み手に伝える)
サンプルコード(リファクタリング前) ※ if文の条件が長くなると単純に読み辛く、理解しづらいという問題も つまりどういうことだってばよ?
サンプルコード(リファクタリング後) 曜日判定ロジックを 別関数に抽出 週末は割増料金になることをより明確に表現 ※ ユニットテストのしやすさも向上
関数命名のセオリー 「実装」と「意図」を分離する つまり「どうやって処理を行っているか」ではなく 「何をしているか」に着目して命名する × isDayOfWeekZeroOne() ◦ isWeekend()