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
59
2024-09-27 リファクタリング勉強会
社内勉強会で使ったスライド。
Shin-ya Koga
September 27, 2024
Tweet
Share
More Decks by Shin-ya Koga
See All by Shin-ya Koga
仮想化って何だろう
shkoga
0
160
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
28
900
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Building an army of robots
kneath
302
44k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Become a Pro
speakerdeck
PRO
26
5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
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 いよいよ、リファクタリング手法の最終章だ!!