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
未来を拓くAI技術〜エージェント開発とAI駆動開発〜
leveragestech
2
140
プロダクトという一杯を作る - プロダクトチームが味の責任を持つまでの煮込み奮闘記
hiliteeternal
0
460
マイコンでもRustのtestがしたい その2/KernelVM Tokyo 18
tnishinaga
2
2.3k
DataformでPythonする / dataform-de-python
snhryt
0
170
Google I/O Extended Incheon 2025 ~ What's new in Android development tools
pluu
1
280
実践 Dev Containers × Claude Code
touyu
1
190
AIに安心して任せるためにTypeScriptで一意な型を作ろう
arfes0e2b3c
0
370
Vibe coding コードレビュー
kinopeee
0
440
AIコーディングエージェント全社導入とセキュリティ対策
hikaruegashira
16
9.9k
可変性を制する設計: 構造と振る舞いから考える概念モデリングとその実装
a_suenami
10
1.7k
CEDEC2025 長期運営ゲームをあと10年続けるための0から始める自動テスト ~4000項目を50%自動化し、月1→毎日実行にした3年間~
akatsukigames_tech
0
130
LLMOpsのパフォーマンスを支える技術と現場で実践した改善
po3rin
8
920
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
695
190k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.4k
Building Adaptive Systems
keathley
43
2.7k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
110
20k
Code Reviewing Like a Champion
maltzj
525
40k
Raft: Consensus for Rubyists
vanstee
140
7.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
880
Designing Experiences People Love
moore
142
24k
A designer walks into a library…
pauljervisheath
207
24k
Making Projects Easy
brettharned
117
6.3k
The World Runs on Bad Software
bkeepers
PRO
70
11k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Transcript
リファクタリング 既存のコードを安全に改善する 意図が伝わるコードの書き方
リファクタリングとは? • プログラムの振る舞い(仕様)を変えずに内部品質を向上させる作業 • 内部品質: 保守性、可読性等 • バグ修正ではない(リファクタリングとバグ修正は別で行う) • 実現方法:
カプセル化、関数化、名前の変更等
ロジックを関数化する目的とは? 1. 再利用性を高める(同じ処理を繰り返し書かない) 2. 可読性を上げる(行数を減らす) 3. 意図を明確にする(何をやっているかを読み手に伝える)
サンプルコード(リファクタリング前) ※ if文の条件が長くなると単純に読み辛く、理解しづらいという問題も つまりどういうことだってばよ?
サンプルコード(リファクタリング後) 曜日判定ロジックを 別関数に抽出 週末は割増料金になることをより明確に表現 ※ ユニットテストのしやすさも向上
関数命名のセオリー 「実装」と「意図」を分離する つまり「どうやって処理を行っているか」ではなく 「何をしているか」に着目して命名する × isDayOfWeekZeroOne() ◦ isWeekend()