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
リファクタリングチャンスを探せ
Search
Kaoru Hotate
November 27, 2019
Programming
2
380
リファクタリングチャンスを探せ
Classi Rails Night #1 2019/11/27 登壇資料
https://connpass.com/event/152405/
Kaoru Hotate
November 27, 2019
Tweet
Share
More Decks by Kaoru Hotate
See All by Kaoru Hotate
20240607_人を動かし続ける力_ピープルマネジメントへの内発的動機づけの工夫
hotatekaoru
1
300
20210528_MedPeer_事業成長を加速させたエンジニアリングのウラ側
hotatekaoru
0
1.2k
費用対効果の高いテストコードを書くために意識したこと.pdf
hotatekaoru
3
4.6k
新規プロジェクトのリードエンジニアになるために
hotatekaoru
6
2.5k
Dependabotからの脱却
hotatekaoru
0
380
Fat Modelに対処する 6つのリファクタリングパターン
hotatekaoru
13
3.8k
MobPro2Points
hotatekaoru
0
87
ViewModelをプロダクトに導入した🤖
hotatekaoru
1
190
僕らのリファクタリングは裏切らない
hotatekaoru
2
2.5k
Other Decks in Programming
See All in Programming
Go Code Generation at newmo / 2024-08-27 #newmo_layerx_go
genkey6
0
540
Amebaチョイス立ち上げの裏側 ~依存システムとの闘い~
daichi_igarashi
0
220
大公開!iOS開発の悩みトップ5 〜iOSDC Japan 2024〜
ryunakayama
0
190
ESLint Rule により事業, 技術ドメインに沿った制約と誓約を敷衍させるアプローチのすゝめ
shinyaigeek
1
2.9k
これからの時代の新標準!SwiftTestingへの移行とトラブルシューティング
uetyo
0
500
REXML改善のその後
naitoh
0
160
Mergeable Libraryで 高速なアプリ起動を実現しよう!
giginet
PRO
1
2.2k
Using Livebook to build and deploy internal tools @ ElixirConf 2024
hugobarauna
0
230
Regular Expressions, REXML, Automata Learning
makenowjust
0
190
Rechartsで楽にゴリゴリにカスタマイズする!
10tera
1
140
[DroidKaigi 2024] Android ViewからJetpack Composeへ 〜Jetpack Compose移行のすゝめ〜 / From Android View to Jetpack Compose: A Guide to Migration
syarihu
1
140
XStateでReactに秩序を与えたい
gizm000
0
520
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
28
2.2k
Embracing the Ebb and Flow
colly
83
4.4k
Testing 201, or: Great Expectations
jmmastey
36
7k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
103
47k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.4k
The Illustrated Children's Guide to Kubernetes
chrisshort
47
48k
Rails Girls Zürich Keynote
gr2m
93
13k
Pencils Down: Stop Designing & Start Developing
hursman
118
11k
Facilitating Awesome Meetings
lara
49
5.9k
Intergalactic Javascript Robots from Outer Space
tanoku
268
26k
How to train your dragon (web standard)
notwaldorf
85
5.6k
It's Worth the Effort
3n
182
27k
Transcript
ϦϑΝΫλϦϯάνϟϯεΛ୳ͤʂ ,BPSV)PUBUF!QVSVOLBPSV $SBTTJ3BJMT/JHIU DMBTTJ@SBJMT@OJHIU 1
อཱ֜ ,BPSV)PUBUF 5XJUUFS!QVSVOLBPSV ϝυϐΞͱ͍͏ձࣾͷ ΤϯδχΞͰ͢ 3VCZྺ͘Β͍ ΤϯδχΞྺ ࣗݾհ 2
ࠓϦϑΝΫλϦϯάͷΛ͠·͢ʂ 3
ϦϑΝΫλϦϯάͷͷલʹɾɾɾ ࠷ۙͷΈࣄʢআʣΛ͠·͢ 4
5
‣ झຯɾޘָͷਓ͍Δ ͷͨΊʹΔਓ͍Δ Β͞ΕͯΔਓ͍Δ ݟͯݟ͵ৼΓΛ͢Δਓ͍Δ ‣ ϦϑΝΫλϦϯά Γ͍ͨਓɾզຫͰ͖ͳ͍ਓ͕Δʁ ‣ ༷ʑͳਓ͕͍ΔதͰɺϦϑΝΫλϦϯάΛ
৫ϨϕϧͰߦ͏ͷ͔ͳΓͦ͠͏ ϦϑΝΫλϦϯάҰॹʁ 6
‣ ࠓɺϦϑΝΫλϦϯάΛ৫Ͱߦ͏ࡍͷ ಈػ͚ͱࢦʹযΛͯͯ͠·͢ ‣ ʮͳͥʯʮͲ͏ͬͯʯͰͳ͘ɺ ʮԿΛʯϦϑΝΫλϦϯά͢Δ͔ʹ͍ͭͯ͠·͢ ‣ ࣮ફ͍ͯ͠Δํ࠶֬ೝͰ͖ΔʹͳΕͱࢥ͍·͢ ࠓͷ͓ͳ͠ 7
1BSU ΤϯδχΞνʔϜͰͷ ϦϑΝΫλϦϯάͷϞνϕʔγϣϯΛ্͛Δ 8
ϦϑΝΫλϦϯάΛΔཧ༝ͷେ෦ɺҎԼͷͭͰ͢ ‣ ʮ໘നͦ͏ʂʯ ྑ͍ઃܭΛҙࣝ͢ΔͷͰɺʹͭͳ͕Δ ‣ ʮզຫͰ͖ͳ͍ʂʯ ྑ͘ͳ͍ίʔυΛ໓ͯ͠ɺਫ਼ਆతॆײΛಘΔ ଞͷਓʹݟΒΕͨ͘ͳ͍ίʔυΛͬͦ͜Γྑ͓ͯ͘͘͠ ϦϑΝΫλϦϯά͕తʹͳΓ͕ͪɾɾɾ
ϦϑΝΫλϦϯάΛ͕Δཧ༝ 9
ϦϑΝΫλϦϯά͚ͩͷ࣌ؒΛͱΔ͜ͱͰ ʮྑ͍ઃܭʯΛҙࣝͯ͠ίʔυΛॻ͘Α͏ʹͳΔ ϦϑΝΫλϦϯάʹͭͳ͕Δ 10 ϦϑΝΫλϦϯά͕ಘҙʹͳΔͱɺʢதུʣѱ͍ίʔυΛॻ͘ͷΛΊɺ ѱ͍׳शʹै͏ͷΛΊɺϓϨϑΝΫλϦϯάΛ࢝ΊΔͷͩɻʢதུʣ ίʔυͷϦϑΝΫλϦϯάɺίʔυΛॻ͘ͱ͖ʹ͍͚ͯ͠ͳ͍͜ͱɺ ΘΓʹ͖͢͜ͱΛֶͿ্Ͱ࠷ͷํ๏ͷͭͳͷͩɻ %BWJE4DPUU#FSOTUFJOஶʮϨΨγʔίʔυ͔Βͷ٫ʯΑΓ
ྑ͍ઃܭΛ࣮ײ͢ΔΈ͕ඞཁ 11 ‣ ڠྗ͠߹͏ ‣ ϖΞϓϩɾϞϒϓϩ ‣ ٕज़ސ ‣ ϧʔϧʹଇΔ
‣ 40-*%ݪଇ ‣ ˓˓ύλʔϯ
‣ 'BU.PEFMͷղফύλʔϯΛ ͭͷࣄྫʹ͚ͯհ͍ͯ͠·͢ IUUQTTQFBLFSEFDLDPNIPUBUFLBPSVGBUNPEFMOJEVJDIVTVSVUVGBMTFSJIVBLVUBSJOHVQBUBO 'BU.PEFMͷղফύλʔϯ 12
‣ ϦϑΝΫλϦϯάظతʹ͓ۚΛੜΈग़ͮ͠Β͍ͷ ‣ Γͨͯ͘ඇΤϯδχΞ͔Βཧղ͕ಘΒΕͳ͍ ݁ՌΕ͍ͯͳ͍ਓ͕ଟ͍ͷͰʁ ࣮ࡍɾɾɾ 13
1BSU ඇΤϯδχΞʹ ϦϑΝΫλϦϯάΛཧղͯ͠Β͏ 14
͚ͩ͜͜ͷͰ͕͢ɺ ؆୯ͳํ๏Λݟ͚ͭ·ͨ͠ 15
ΠϯύΫτͷ͋ΔʮΒ͔͠ʯΛ͢Ε0, ˞औΓ·ͤΜ 16
‣ ϦϑΝΫλϦϯάͱ͍͏ɺ ظతʹपΓʹධՁ͞ΕͮΒ͍ ཧղΛಘͮΒ͍ ‣ ධՁɾཧղΛಘΔͨΊʹɺࣈ͕ඞཁ ‣ ඇΤϯδχΞͷཧղΛಘΔͨΊʹ ఆྔతʹՌΛग़ͤΔՕॴ͔Β ϦϑΝΫλϦϯά͠·͠ΐ͏
ϦϑΝΫλϦϯάͷՌΛ໌֬ʹ͠Α͏ 17
‣ ϨεϙϯελΠϜ ‣ ςετͷ࣮ߦ ‣ ίʔυͷ࣭ ‣ $PEF$MJNJBUF ‣ SVCZDSJUJD
‣ ίʔυͷՄಡੑ ‣ $POUSPMMFSͷߦ ‣ 3VCPDPQͷEJTBCMF ϦϑΝΫλϦϯάͷఆྔతͳՌ 18
‣ /FX3FMJD4LZMJHIUͰ ϨεϙϯελΠϜ͕͍ॲཧΛௐࠪ ‣ मਖ਼ྫ ‣ / Λແ͘͢ ‣ ൃߦ͞ΕΔΫΤϦΛνϡʔχϯά͢Δ
‣ ඇಉظʹͰ͖Δॲཧඇಉظʹ͢Δ ‣ ͍ॲཧΛݺͼग़͢ճΛݮΒ͢ ‣ SFEJTNFNDBDIFE ϦϑΝΫλϦϯάͷ,1*ྫʢϨεϙϯελΠϜʣ 19
‣ ѹతʹ͍ͷɺKTUSVFͳ&&ͷςετ ‣ KTଆͷϩδοΫΛKFTUͳͲͷKTςετʹدͤΔ ‣ $POUSPMMFSͷϩδοΫΛ.PEFMଆʹدͤΔ ‣ ͨ·ʹམͪΔςετͷআ ϦϑΝΫλϦϯάͷ,1*ྫʢςετͷ࣮ߦʣ 20
‣ ෳՕॴͷڞ௨ϩδοΫʢίϐϖʣΛݮΒ͢ ‣ ෳࡶͳ࣮ΛݮΒ͢ मਖ਼ྫ ‣ $PEF$MJNBUFͷධՁΛ্͛Δ ‣ SVCZDSJUJDͷධՁΛ্͛Δ ϦϑΝΫλϦϯάͷ,1*ྫʢίʔυͷ࣭ΛߴΊΔʣ
21
https://codeclimate.com/ ‣ Φʔϓϯιʔεແྉ ‣ ؒͷτϥΠΞϧظؒ͋Γ ͦͷ͋ͱ༗ྉ ‣ ࣌ؒʹ༨༟͕͋Εը໘ݟͤΔ $PEF$MJNBUF 22
https://github.com/whitesmith/rubycritic ‣ ࣌ؒʹ༨༟͕͋Εը໘ݟͤΔ SVCZDSJUJD 23
‣ ʮඞཁʹഭΒΕΔલʹʯՄಡੑΛߴΊΔमਖ਼Λߦ͏ ‣ ඇΤϯδχΞͷཧղඞཁ मਖ਼ྫ ‣ $POUSPMMFSͷߦΛݮΒ͢ ‣ 3VCPDPQͷEJTBCMFΛݮΒ͢ ‣
.PEFMͷॲཧΛผΫϥεʹҕৡ͢Δ ϦϑΝΫλϦϯάͷ,1*ྫʢՄಡੑΛߴΊΔʣ 24
‣ ϦϑΝΫλϦϯάΤϯδχΞͱͯ͠ͷʹͭͳ͕Δ ‣ ΤϯδχΞ͕ࣗൃతʹϦϑΝΫλϦϯά͢ΔͨΊʹɺ Λ࣮ײͰ͖ΔΈ͕ඞཁ ‣ ඇΤϯδχΞʹϦϑΝΫλϦϯάΛ ཧղͯ͠Β͏ͨΊʹɺ ͰՌΛใࠂͰ͖ΔϦϑΝΫλϦϯά͕ඞཁ ·ͱΊ
25
ࢀߟจݙ 26 ‣ ϨΨγʔίʔυ͔Βͷ٫ ʕιϑτΣΞͷण໋ΛԆ͠ ՁΛߴΊΔͭͷϓϥΫςΟε %BWJE4DPUU#FSOTUFJOஶ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 27