PHPBLT#3 で話した内容です。
Ϋιίʔυͷ ଌΓํPHPBLT #3@Hiraku
View Slide
ࣗݾհ• த (@Hiraku)• ޱบʮcomposer͕͍ʯʮޫ͕͍ʯˡNew!• ޫ͍Λࠀͯ͠composerΛ10ഒͨ͘͠ http://tech.mercari.com/entry/2016/02/01/164829
hirak/prestissimo (composerߴԽϓϥάΠϯ)Πϯετʔϧ͢Δ͚ͩͰ10ഒ͙Β͍͘ͳΓ·͢
hirak/prestissimo• ͝ԉ͋Γ͕ͱ͏͍͟͝·͢
prestissimoΛൃද͔ͯ͠Β Ұϲ݄
͜͜Ұϲ݄ͷՌ→1/24 2/28
Scrutinizer• ίʔυ࣭ʹΛ͚ͭΔαʔϏε (OSSͳΒແྉʂ)• όάͬΆ͍ॴΛݟ͚ͭͯ͘ΕΔ• 10ຬ
ϝιουผͷ
ScrutinizerείΞͷ্͛ํ• ৭(AϥϯΫ)ͷϝιου͔ΓʹͳͬͨΒɺ10.00ʹͳΔ• ଌఆ݁Ռ৭ʑग़ͯ͘Δ͕ɺͲ͜Λमਖ਼͢Ε͍͍ͷ͔ʁ
͜͜ʹ
C.R.A.P.=Change Risk Anti-Patterns
༁͢Δͱ Ϋι
CRAPͱ• Ϋιίʔυͷ߹͍Λఆྔతʹදͨ͠ࣈ• 1ʙແݶେ• If CRAP1(m) > 30, we consider the methodto be CRAPpy.
Googleͷϒϩά͕ৄ͍͠http://googletesting.blogspot.jp/2011/02/this-code-is-crap.html
comp(m) = ॥తෳࡶcov(m) = ςετΧόϨοδ
comp(m)=॥తෳࡶ• ίʔυͷذΛ͑ͨͷ• ifforΛ͏ͱ1ͣͭ૿͑Δ(্ݶͳ͍)• ذ͕ͳ͚Ε1
cov(m)=ςετΧόϨοδ• ϢχοτςετͰ࣮ߦ͞Εͨίʔυͷׂ߹• ͜͜Ͱݴ͏ΧόϨοδC0ΧόϨοδͷ͜ͱ ҰͰશߦ࣮ߦ͍ͯ͠Ε100%• 0%ʙ100%ͷؒͷࣈ
cov(m)͕100%ͩͬͨΒ͕͜͜0ʹͳΔΑͶ
comp(m)=1, cov(m)=0%͕͜͜1ʹͳΔΑͶ͜͜1ʹͳΔΑͶ
CRAPͱมͷؔ• comp(m) ্͕͕Δͱ2ͷ͍Ͱ૿͑Δ• cov(m)্͕͕Δͱগ͠؇͞ΕΔ• ΧόϨοδ͕100%Ͱɺෳࡶ͕30Λ͍͑ͯͨΒμϝ
৭͕CRAP<30
CRAPείΞͷԼ͛ํ
جຊతͳϧʔϧ• ෳࡶϝιουผͳͷͰɺࡉׂ͔͘͢ΔͱݮΔ• ϢχοτςετΛॻ͚ݮΔ
ݱ࣮తͳ• ෳࡶͳίʔυϢχοτςετͮ͠Β͍• ςετ͘͢͠ॻ͖͑ͯΏ͘• →ࣗવͱίʔυׂ͕͞ΕΔʂ
ιʔεΛ͘͢Δ• ಉ͡ϩδοΫΛ͍ίʔυͰ࠶ݱ͢Δ• ϥΠϒϥϦؔͷ׆༻• ίϐϖΛݮΒͯؔ͠ڞ௨Խ• ࠶ؼʹॻ͖͑Δ
PHPUnitͰCRAPܭଌ• ΧόϨοδϨϙʔτͰCRAPείΞಡΊ·͢
prestissimoͷي
ࠓͷ·ͱΊ• ΫιίʔυΛఆྔతʹఆ͢Δํ๏͕͋Δ• ଌͬͯΈΔͱ໘ന͍ΑɺPHPUnitͰΘ͔ΔΑ• Ғͦ͏ʹղઆ͚ͨ͠ͲScrutinizerείΞ10.00·ͩ౸ୡͯ͠ͳ͍
ิɿ CRAP͕ڭ͑ͯ͘Εͳ͍ͷ• ιϑτΣΞ͕͍͔Ͳ͏͔• ʹཱ͔ͭʢΧωΛੜΉ͔ʣ• ֦ுੑʹ༏Ε͍ͯΔ͔(͋͘·ͰෳࡶͷͰ͋Δ͜ͱʹҙ)