Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
Navigationを見据えたリファクタリング -マルチモジュール化を添えて-
Keisuke kiuchi
August 19, 2019
Programming
1
1.4k
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
11
3.9k
kiuchikeisuke
5
500
kiuchikeisuke
0
410
kiuchikeisuke
2
540
kiuchikeisuke
21
6.4k
Other Decks in Programming
See All in Programming
dbrumann
0
110
osyo
0
300
lovee
5
710
selcukusta
1
100
yasaichi
31
7.7k
bells17
0
360
manfredsteyer
PRO
0
140
morimorihoge
1
150
heistak
2
130
bkuhlmann
4
660
alperhankendi
1
140
korosuke613
2
240
Featured
See All Featured
yeseniaperezcruz
302
31k
bkeepers
408
58k
sugarenia
233
850k
dougneiner
55
5.4k
edds
56
9.4k
philhawksworth
190
17k
62gerente
587
200k
chriscoyier
780
240k
mojombo
358
62k
mza
80
4.1k
aarron
257
36k
trishagee
24
2.5k
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ϞδϡʔϧͰߦ͑ґଘੑΛ ؾʹ͠ͳͯ͘ྑ͍
͓ΘΓ