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
Navigationを見据えたリファクタリング -マルチモジュール化を添えて-
Search
Keisuke kiuchi
August 19, 2019
Programming
1
2.7k
Navigationを見据えたリファクタリング -マルチモジュール化を添えて-
Bonfire Android #5
2019/8/19
Keisuke kiuchi
August 19, 2019
Tweet
Share
More Decks by Keisuke kiuchi
See All by Keisuke kiuchi
巨大なプロダクトにおける技術負債と戦った成功と失敗の軌跡(途中経過)
kiuchikeisuke
0
1.4k
ぼくのかんがえた最強のUsecaseの作り方~あるいはビジネスロジックとはなにかという1つの回答~
kiuchikeisuke
13
6.8k
良いコードを書くためにやってみてること3つ.pdf
kiuchikeisuke
5
620
NavigationのNavOptions周りを覗いてみよう
kiuchikeisuke
0
680
AndroidStudioのテンプレートを覗いてみよう
kiuchikeisuke
2
800
Kotlin版CleanArchitectureのテンプレート作ったら爆速開発になった話+α
kiuchikeisuke
21
8.5k
Other Decks in Programming
See All in Programming
17年周年のWebアプリケーションにTanStack Queryを導入する / Implementing TanStack Query in a 17th Anniversary Web Application
saitolume
0
250
Jakarta EE meets AI
ivargrimstad
0
260
CSC305 Lecture 26
javiergs
PRO
0
140
PHPUnitしか使ってこなかった 一般PHPerがPestに乗り換えた実録
mashirou1234
0
220
なまけものオバケたち -PHP 8.4 に入った新機能の紹介-
tanakahisateru
1
120
Recoilを剥がしている話
kirik
5
6.8k
Effective Signals in Angular 19+: Rules and Helpers
manfredsteyer
PRO
0
110
PSR-15 はあなたのための ものではない? - phpcon2024
myamagishi
0
140
短期間での新規プロダクト開発における「コスパの良い」Goのテスト戦略」 / kamakura.go
n3xem
2
170
テスト自動化失敗から再挑戦しチームにオーナーシップを委譲した話/STAC2024 macho
ma_cho29
1
1.3k
rails stats で紐解く ANDPAD のイマを支える技術たち
andpad
1
290
Haze - Real time background blurring
chrisbanes
1
510
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
The Cost Of JavaScript in 2023
addyosmani
45
7k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Fireside Chat
paigeccino
34
3.1k
RailsConf 2023
tenderlove
29
940
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
0
98
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Transcript
OBWJHBUJPOΛݟਾ͑ͨϦϑΝΫλϦϯά dϚϧνϞδϡʔϧԽΛఴ͑ͯd #POpSF"OESPJE ɹܒี
ܒี w ৬ۀɿ:ͷ"OESPJEΤϯδχΞ݉ҭࣇύύ w झຯͰ࡞ͬͨϞϊɿʮΒ͘ͰΜ "QQ ʯɺ ʮ$MFBO"SDIJUFDUVSF5FNQMBUF'PS,PUMJO 044 ʯ
w ͖ͳΞʔΩςΫνϟɿ$MFBO"SDIJUFDVUF w 4/4 5XJUUFS!GFJ@LPNF (JUIVC!LJVDIJLFJTVLF 2JJUB!L@LFJTVLF
એͦͷ̍ w ٕज़ॻయ ʹͯαʔΫϧඈཾ͞Μ͔ͪΒ ʮϥϊϕ෩ʹ $MFBO"SDIJUFDUVSFΛֶͿຊʯ తͳಉਓࢽग़͠·ʔ͢
એͦͷ̎
ࠓճͷωλ ϑΝΠφϯεΞϓϦΛ͕ͬͭΓ ϦϑΝΫλϦϯά͠Α͏ͱͨ࣌͠ͷग़དྷࣄ ґଘؔ ༻ؔ
"QQ ͜Μͳײ͡ͳͭΛɾɾɾ 1SFTFOUFS %BUB
͜Μͳײ͡ʹ͍ͨ͠ "QQ 1SFTFOUFS %BUB %PNBJO 'SBHNFOU 'SBHNFOU 'SBHNFOU OBWJ HBUJPO
ɾ ɾ ɾ
1SFTFOUFS OBWJHBUJPOಋೖ͢Δ্Ͱݟ͖͑ͯͨ w BQQԼͷ'SBHNFOU͕OBWJHBUJPO͔Βݟ͑ͳ͍ w Ϋϥεؒͷ૬ޓґଘ͕ଟ͘શΫϥε͕͓Ҿӽ͢͠Δ͍ͩͬͨ w ը໘ભҠܥͷॲཧ͕৭ΜͳॴʹࢄΒ͍͙ͬͯͯ͢ʹಋೖͰ͖ͳ͔ͬͨ "QQ 'SBHNFOU
'SBHNFOU ɾ ɾ ɾ 'SBHNFOU OBWJ HBUJPO 'SBHNFOU 'SBHNFOU 'SBHNFOU 'SBHNFOU TPNF$MBTT TPNF$MBTT TPNF$MBTT TPNF$MBTT
ંҊʜ
কདྷOBWJHBUJPOΛಋೖ͍͢͠ Α͏ʹϦϑΝΫλϦϯά͠Α͏
ͬͨ͜ͱ ґଘͷ͖Λٯసͤͭͭ͞ OBWJHBUJPOʹؔ࿈͢ΔॲཧΛूͨ͠
͜ΕΛɾɾɾ w 3FGBDUPSFE'SBHNFOU͔Β'SBHNFOU ͕ݟ͑ͳ͍ 1SFTFOUFS "QQ 3FGBDUPSFE 'SBHNFOU 'SBHNFOU ɾ
ɾ ɾ 'SBHNFOU
͜͏ͨ͠ w /BWJ*OUFSGBDFΛ௨ͯؒ͠తʹ'SBHNFOU ΞΫηεͰ͖ΔΑ͏ʹͨ͠ 1SFTFOUFS "QQ 3FGBDUPSFE 'SBHNFOU 'SBHNFOU ɾ
ɾ ɾ 'SBHNFOU /BWJ *OUFSGBDF /BWJ *OUFSGBDF *NQM
1SFTFOUFS "QQ ࣮ interface NaviInterface { fun getFragment2(): Fragment fun
getFragment3(data: SomeData): Fragment } class RefactoredFragment { override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { android.R.id.home -> changeFragment(naviInterface.getFragment2()) R.id.action_sub -> changeFragment(naviInterface.getFragment3(data)) } return super.onOptionsItemSelected(item) } } class NaviInterfaceImpl : NaviInterface { override fun getFragment2(): Fragment = Fragment2.newInstance() override fun getFragment3(data: SomeData): Fragment = Fragment3.newInstance(data.code, data.name) } OBWJHBUJPOΛ͏ͱ͖͜ΕΒΛ ஔ͖͑Ε0, ͩͱࢥ͏ OBWJHBUJPOʹ͢Δ࣌ ͜ΕΒΛஔ͖͑Ε0,
OBWJHBUJPO༻ͷॲཧ͕ूग़དྷͯ 1SFTFOUFS͕BQQʹґଘ͠ͳ͘ͳͬͨ
ऄͦͷ̍ w ͜ͷख๏ͬͯଞͷϨΨγʔͳ"QJ6UJMݺͼग़͠ʹ͑ΔΜ͡Όʁ ˠ:&4 1SFTFOUFS "QQ 3FGBDUPSFE 'SBHNFOU -FHBDZ6UJM ɾ
ɾ ɾ -FHBDZ"QJ -FHBDZ *OUFSGBDF -FHBDZ *OUFSGBDF *NQM -FHBDZ *OUFSGBDF -FHBDZ *OUFSGBDF -FHBDZ *OUFSGBDF *NQM -FHBDZ *OUFSGBDF *NQM
ऄͦͷ w ͦͦOBWJHBUJPOΛBQQʹ࣮͢ΕΑ͔ͬͨͷͰʁ ˠ:&4 1SFTFOUFS "QQ 3FGBDUPSFE 'SBHNFOU 'SBHNFOU ɾ
ɾ ɾ 'SBHNFOU OBWJ HBUJPO
·ͱΊ w ґଘͷ͖Λٯసͤ͞Εɺ1SFTFOUFSϞδϡʔϧ͔ΒBQQϞδϡʔϧ ͷؒతͳࢀর͕Մೳ OBWJHBUJPOҎ֎ʹ৭ΜͳγʔϯͰར༻Մೳ w ͦͦOBWJHBUJPOͷ࣮ΛBQQϞδϡʔϧͰߦ͑ґଘੑΛ ؾʹ͠ͳͯ͘ྑ͍
͓ΘΓ