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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
mazua
August 20, 2021
Programming
22k
1
Share
refactoring
mazua
August 20, 2021
More Decks by mazua
See All by mazua
初めてのPHP.pdf
azuma
0
22k
Other Decks in Programming
See All in Programming
ReactとSvelteのその先、Ripple-TS / Beyond React and Svelte: Ripple-TS
ssssota
3
2k
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.1k
inferと仲良くなる10分間
ryokatsuse
1
350
さぁV100、メモリをお食べ・・・
nilpe
0
130
AIチームを指揮するOSS「TAKT」活用術 / How to Use “TAKT,” an OSS Tool for Orchestrating AI Teams
nrslib
6
800
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
2
1.6k
The NotImplementedError Problem in Ruby
koic
0
180
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
3.2k
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
120
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
12k
TSKaigi2026-静的解析への投資がAI時代のコード品質を支える ── カスタムESLintルールの設計と運用
hayatokudou
7
1.3k
Lessons from Spec-Driven Development
simas
PRO
0
120
Featured
See All Featured
Ruling the World: When Life Gets Gamed
codingconduct
0
240
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Accessibility Awareness
sabderemane
1
130
Music & Morning Musume
bryan
47
7.2k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
370
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
240
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
210
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Believing is Seeing
oripsolob
1
140
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Transcript
リファクタリング 既存のコードを安全に改善する 意図が伝わるコードの書き方
リファクタリングとは? • プログラムの振る舞い(仕様)を変えずに内部品質を向上させる作業 • 内部品質: 保守性、可読性等 • バグ修正ではない(リファクタリングとバグ修正は別で行う) • 実現方法:
カプセル化、関数化、名前の変更等
ロジックを関数化する目的とは? 1. 再利用性を高める(同じ処理を繰り返し書かない) 2. 可読性を上げる(行数を減らす) 3. 意図を明確にする(何をやっているかを読み手に伝える)
サンプルコード(リファクタリング前) ※ if文の条件が長くなると単純に読み辛く、理解しづらいという問題も つまりどういうことだってばよ?
サンプルコード(リファクタリング後) 曜日判定ロジックを 別関数に抽出 週末は割増料金になることをより明確に表現 ※ ユニットテストのしやすさも向上
関数命名のセオリー 「実装」と「意図」を分離する つまり「どうやって処理を行っているか」ではなく 「何をしているか」に着目して命名する × isDayOfWeekZeroOne() ◦ isWeekend()