Speaker Deck
Speaker Deck Pro
Sign in
Sign up
for free
リファクタリングチャンスを探せ
Kaoru Hotate
November 27, 2019
Programming
2
170
リファクタリングチャンスを探せ
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
hotatekaoru
3
3.6k
hotatekaoru
6
1.7k
hotatekaoru
0
210
hotatekaoru
14
2.3k
hotatekaoru
0
67
hotatekaoru
1
160
hotatekaoru
2
1.8k
hotatekaoru
0
210
hotatekaoru
1
340
Other Decks in Programming
See All in Programming
malvinstn
1
610
jun0
3
630
yumcyawiz
4
600
itosho525
0
130
sullis
0
110
nauleyco
0
200
hanakla
2
3k
atskimura
0
290
xrdnk
0
130
shin1x1
0
580
makicamel
1
160
saki4869
0
170
Featured
See All Featured
tammielis
237
23k
bkeepers
321
53k
sugarenia
233
830k
keathley
17
630
marktimemedia
6
330
dougneiner
55
5.4k
jonrohan
1021
380k
vanstee
116
4.8k
cromwellryan
101
5.9k
3n
163
22k
holman
461
280k
smashingmag
283
47k
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