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
22k
Other Decks in Programming
See All in Programming
Pythonではじめるオープンデータ分析〜書籍の紹介と書籍で紹介しきれなかった事例の紹介〜
welliving
3
690
愛される翻訳の秘訣
kishikawakatsumi
3
360
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
180
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.2k
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
170
Cell-Based Architecture
larchanjo
0
150
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
230
実は歴史的なアップデートだと思う AWS Interconnect - multicloud
maroon1st
0
290
ゆくKotlin くるRust
exoego
1
180
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
540
JETLS.jl ─ A New Language Server for Julia
abap34
2
470
2年のAppleウォレットパス開発の振り返り
muno92
PRO
0
130
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
2.9k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
The SEO identity crisis: Don't let AI make you average
varn
0
43
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
Tell your own story through comics
letsgokoyo
0
770
Highjacked: Video Game Concept Design
rkendrick25
PRO
0
260
What's in a price? How to price your products and services
michaelherold
246
13k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
860
Git: the NoSQL Database
bkeepers
PRO
432
66k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
The Pragmatic Product Professional
lauravandoore
37
7.1k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
1
880
Transcript
リファクタリング 既存のコードを安全に改善する 意図が伝わるコードの書き方
リファクタリングとは? • プログラムの振る舞い(仕様)を変えずに内部品質を向上させる作業 • 内部品質: 保守性、可読性等 • バグ修正ではない(リファクタリングとバグ修正は別で行う) • 実現方法:
カプセル化、関数化、名前の変更等
ロジックを関数化する目的とは? 1. 再利用性を高める(同じ処理を繰り返し書かない) 2. 可読性を上げる(行数を減らす) 3. 意図を明確にする(何をやっているかを読み手に伝える)
サンプルコード(リファクタリング前) ※ if文の条件が長くなると単純に読み辛く、理解しづらいという問題も つまりどういうことだってばよ?
サンプルコード(リファクタリング後) 曜日判定ロジックを 別関数に抽出 週末は割増料金になることをより明確に表現 ※ ユニットテストのしやすさも向上
関数命名のセオリー 「実装」と「意図」を分離する つまり「どうやって処理を行っているか」ではなく 「何をしているか」に着目して命名する × isDayOfWeekZeroOne() ◦ isWeekend()