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
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
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Google's AI Overviews - The New Search
badams
0
870
Joys of Absence: A Defence of Solitary Play
codingconduct
1
260
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
200
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
WCS-LA-2024
lcolladotor
0
390
The agentic SEO stack - context over prompts
schlessera
0
560
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
680
Navigating Weather and Climate Data
rabernat
0
54
Exploring anti-patterns in Rails
aemeredith
2
210
How to Talk to Developers About Accessibility
jct
1
86
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 いよいよ、リファクタリング手法の最終章だ!!