Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
2024-09-27 リファクタリング勉強会
Search
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
180
2025-02-18.slide_revised
shkoga
0
110
仮想化って何だろう
shkoga
0
210
Featured
See All Featured
Believing is Seeing
oripsolob
0
14
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
130
Joys of Absence: A Defence of Solitary Play
codingconduct
1
250
Discover your Explorer Soul
emna__ayadi
2
1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
96
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
180
Speed Design
sergeychernyshev
33
1.4k
A Tale of Four Properties
chriscoyier
162
23k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Evolving SEO for Evolving Search Engines
ryanjones
0
73
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 いよいよ、リファクタリング手法の最終章だ!!