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
2024-09-27 リファクタリング勉強会
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Shin-ya Koga
September 27, 2024
0
100
2024-09-27 リファクタリング勉強会
社内勉強会で使ったスライド。
Shin-ya Koga
September 27, 2024
Tweet
Share
More Decks by Shin-ya Koga
See All by Shin-ya Koga
Firecracker のソースを読んでみた
shkoga
1
190
2025-02-18.slide_revised
shkoga
0
110
仮想化って何だろう
shkoga
0
210
Featured
See All Featured
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
64
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
110
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
220
From π to Pie charts
rasagy
0
140
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
4 Signs Your Business is Dying
shpigford
187
22k
Producing Creativity
orderedlist
PRO
348
40k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
92
Making Projects Easy
brettharned
120
6.6k
So, you think you're a good person
axbom
PRO
2
1.9k
Transcript
リファクタリング勉強会 ~継承から集約と汎化へ~ 古賀信哉 株式会社アットマークテクノ
1990年代からの変遷(過去34年) 1995年の出版物 “Design Patterns”(オブジェクト指向における再 利用のためのデザインパターン)
1990年代からの変遷(過去34年) 1995年の出版物 “Design Patterns”(オブジェクト指向における再 利用のためのデザインパターン) 再利用可能なオブジェクト指向設計の原理
1990年代からの変遷(過去34年) 1995年の出版物 “Design Patterns”(オブジェクト指向における再 利用のためのデザインパターン) インタフェースに対してプログラミングする のであって、実装に対してプログラミングす るのではない。 再利用可能なオブジェクト指向設計の原理
1990年代からの変遷(過去34年) 1995年の出版物 “Design Patterns”(オブジェクト指向における再 利用のためのデザインパターン) インタフェースに対してプログラミングする のであって、実装に対してプログラミングす るのではない。 クラス継承よりもオブジェクトコンポジションを 多用すること。
再利用可能なオブジェクト指向設計の原理
1990年代からの変遷(過去34年) 1995年の出版物 “Design Patterns”(オブジェクト指向における再 利用のためのデザインパターン) インタフェースに対してプログラミングする のであって、実装に対してプログラミングす るのではない。 クラス継承よりもオブジェクトコンポジションを 多用すること。
再利用可能なオブジェクト指向設計の原理 コンポジション: 「構成」 アグリゲーション: 「集約」 継承と同じ効果を、 コンポジションで も得られる。
1990年代からの変遷(過去34年) GUI プログラミングの普及と OOP 「差分プログラミング」のしやすさ GUI で成功した要因
1990年代からの変遷(過去34年) GUI プログラミングの普及と OOP 「差分プログラミング」のしやすさ GUI で成功した要因
1990年代からの変遷(過去34年) GUI プログラミングの普及と OOP 「差分プログラミング」のしやすさ GUI で成功した要因 継承関係は無いが、 同じ操作のセットを 持つ!
1990年代からの変遷(過去34年) GUI プログラミングの普及と OOP 「差分プログラミング」のしやすさ GUI で成功した要因 継承関係は無いが、 同じ操作のセットを 持つ!
「特性」 (trait)
1990年代からの変遷(過去34年) GUI プログラミングの普及と OOP 「差分プログラミング」のしやすさ GUI で成功した要因 継承関係は無いが、 同じ操作のセットを 持つ!
「特性」 (trait) 共通の「特性」は、多重継承かまたは、 interface で扱える。
1990年代からの変遷(過去34年) GUI プログラミングの普及と OOP 「差分プログラミング」のしやすさ GUI で成功した要因 継承関係は無いが、 同じ操作のセットを 持つ!
「特性」 (trait) 共通の「特性」は、多重継承かまたは、 Interface で扱える。 実装も再利用 ビュー(見立て)を再利用
1990年代からの変遷(過去34年) GUI プログラミングの普及と OOP 「差分プログラミング」のしやすさ GUI で成功した要因 OOP と OOD
の普及・大衆化 様々な分野への適用 ビジネスロジックと GUI の違い 「正しい OOP と OOD」の困難さ
過去10年ほどの変遷 Rust の登場(Go も?) プログラミング言語の役割 クラス階層を正しく使うことに対する諦め インタフェースに対してプログラミングする のであって、実装に対してプログラミングす るのではない。 ビュー(見立て)を再利用
過去10年ほどの変遷 Rust の登場(Go も?) プログラミング言語の役割 クラス階層を正しく使うことに対する諦め インタフェースに対してプログラミングする のであって、実装に対してプログラミングす るのではない。 ビュー(見立て)を再利用
継承を使わず、特性(trait)を Interface だけで表現する言語仕様
過去10年ほどの変遷 Rust の登場(Go も?) プログラミング言語の役割 クラス階層を正しく使うことに対する諦め アプリケーションとフレームワークの違い 「ビジネスロジック」の難しさ
共通の特性 = 汎化 (generalization) ビュー(見立て)を再利用するやり方 https://refactoring.guru/refactoring/techniques/dealing-with-generalization いよいよ、リファクタリング手法の最終章だ!!