Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
2024-09-27 リファクタリング勉強会
Search
Shin-ya Koga
September 27, 2024
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2024-09-27 リファクタリング勉強会
社内勉強会で使ったスライド。
Shin-ya Koga
September 27, 2024
More Decks by Shin-ya Koga
See All by Shin-ya Koga
カーネルランド Rust 勉強会 #5: ライフタイムと borrow checker が、組込み開発分野でどう役立つのか
shkoga
0
34
カーネルランド Rust 勉強会 #4: Zephyr で Rust を使う前に
shkoga
0
78
カーネルランド Rust 勉強会 #3: 並行処理における安全性
shkoga
1
95
カーネルランド Rust 勉強会 #2; Rust の unsafe
shkoga
0
110
Firecracker のソースを読んでみた
shkoga
1
250
2025-02-18.slide_revised
shkoga
0
140
仮想化って何だろう
shkoga
0
250
Featured
See All Featured
Bash Introduction
62gerente
615
220k
Why Our Code Smells
bkeepers
PRO
340
58k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
390
How to train your dragon (web standard)
notwaldorf
96
6.9k
How STYLIGHT went responsive
nonsquared
100
6.3k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.9k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
750
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
440
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
380
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Skip the Path - Find Your Career Trail
mkilby
1
280
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
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 いよいよ、リファクタリング手法の最終章だ!!