Slide 1

Slide 1 text

Ϋιίʔυͷ
 ଌΓํ PHPBLT #3 @Hiraku

Slide 2

Slide 2 text

ࣗݾ঺հ • த໺ ୓ (@Hiraku) • ޱบʮcomposer͕஗͍ʯʮޫ͕஗͍ʯˡNew! • ޫ஗͍໰୊Λࠀ෰ͯ͠composerΛ10ഒ଎ͨ͘͠࿩
 http://tech.mercari.com/entry/2016/02/01/164829

Slide 3

Slide 3 text

hirak/prestissimo 
 (composerߴ଎ԽϓϥάΠϯ) Πϯετʔϧ͢Δ͚ͩͰ10ഒ͙Β͍଎͘ͳΓ·͢

Slide 4

Slide 4 text

hirak/prestissimo • ͝੠ԉ͋Γ͕ͱ͏͍͟͝·͢

Slide 5

Slide 5 text

prestissimoΛൃද͔ͯ͠Β
 Ұϲ݄

Slide 6

Slide 6 text

͜͜Ұϲ݄ͷ੒Ռ → 1/24 2/28

Slide 7

Slide 7 text

Scrutinizer • ίʔυ඼࣭ʹ఺਺Λ͚ͭΔαʔϏε (OSSͳΒແྉʂ) • όάͬΆ͍ॴΛݟ͚ͭͯ͘ΕΔ • 10఺ຬ఺

Slide 8

Slide 8 text

ϝιουผͷ఺਺

Slide 9

Slide 9 text

ScrutinizerείΞͷ্͛ํ • ྘৭(AϥϯΫ)ͷϝιου͹͔ΓʹͳͬͨΒɺ 10.00ʹͳΔ • ଌఆ݁Ռ͸৭ʑग़ͯ͘Δ͕ɺͲ͜Λमਖ਼͢Ε ͹͍͍ͷ͔ʁ

Slide 10

Slide 10 text

͜͜ʹ஫໨

Slide 11

Slide 11 text

C.R.A.P. =Change Risk Anti-Patterns

Slide 12

Slide 12 text

௚༁͢Δͱ
 Ϋι౓

Slide 13

Slide 13 text

CRAPͱ͸ • Ϋιίʔυͷ౓߹͍Λఆྔతʹදͨ͠਺ࣈ • 1ʙແݶେ • If CRAP1(m) > 30, we consider the method to be CRAPpy.

Slide 14

Slide 14 text

Googleͷϒϩά͕ৄ͍͠ http://googletesting.blogspot.jp/2011/02/this-code-is-crap.html

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

comp(m) = ॥؀తෳࡶ౓ cov(m) = ςετΧόϨοδ

Slide 17

Slide 17 text

comp(m)=॥؀తෳࡶ౓ • ίʔυͷ෼ذΛ਺͑ͨ΋ͷ • if΍forΛ࢖͏ͱ1ͣͭ૿͑Δ(্ݶ͸ͳ͍) • ෼ذ͕ͳ͚Ε͹1

Slide 18

Slide 18 text

cov(m)=ςετΧόϨοδ • ϢχοτςετͰ࣮ߦ͞Εͨίʔυͷׂ߹ • ͜͜Ͱݴ͏ΧόϨοδ͸C0ΧόϨοδͷ͜ͱ
 Ұ౓Ͱ΋શߦ࣮ߦ͍ͯ͠Ε͹100% • 0%ʙ100%ͷؒͷ਺ࣈ

Slide 19

Slide 19 text

cov(m)͕100%ͩͬͨΒ ͕͜͜0ʹͳΔΑͶ

Slide 20

Slide 20 text

comp(m)=1, cov(m)=0% ͕͜͜1ʹͳΔΑͶ ͜͜΋1ʹͳΔΑͶ

Slide 21

Slide 21 text

CRAPͱม਺ͷؔ܎ • comp(m) ্͕͕Δͱ 2৐ͷ੎͍Ͱ૿͑Δ • cov(m)্͕͕Δͱগ ͠؇࿨͞ΕΔ • ΧόϨοδ͕100%Ͱ ΋ɺෳࡶ౓͕30Λ௒ ͍͑ͯͨΒμϝ

Slide 22

Slide 22 text

྘৭͕CRAP<30

Slide 23

Slide 23 text

CRAPείΞͷԼ͛ํ

Slide 24

Slide 24 text

جຊతͳϧʔϧ • ෳࡶ౓͸ϝιουผͳͷͰɺࡉ͔͘෼ׂ͢Δ ͱݮΔ • ϢχοτςετΛॻ͚͹ݮΔ

Slide 25

Slide 25 text

ݱ࣮తͳ࿩ • ෳࡶͳίʔυ͸Ϣχοτςετͮ͠Β͍ • ςετ͠΍͘͢ॻ͖׵͑ͯΏ͘ • →ࣗવͱίʔυ͕෼ׂ͞ΕΔʂ

Slide 26

Slide 26 text

ιʔεΛ୹͘͢Δ • ಉ͡ϩδοΫΛ୹͍ίʔυͰ࠶ݱ͢Δ • ϥΠϒϥϦؔ਺ͷ׆༻ • ίϐϖΛݮΒͯؔ͠਺ڞ௨Խ • ࠶ؼʹॻ͖׵͑Δ

Slide 27

Slide 27 text

PHPUnitͰ΋CRAPܭଌ • ΧόϨοδϨϙʔτͰCRAPείΞಡΊ·͢

Slide 28

Slide 28 text

prestissimoͷي੻

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

ࠓ೔ͷ·ͱΊ • ΫιίʔυΛఆྔతʹ൑ఆ͢Δํ๏͕͋Δ • ଌͬͯΈΔͱ໘ന͍ΑɺPHPUnitͰ΋Θ͔ΔΑ • Ғͦ͏ʹղઆ͚ͨ͠ͲScrutinizerείΞ10.00 ·ͩ౸ୡͯ͠ͳ͍

Slide 33

Slide 33 text

ิ଍ɿ
 CRAP͕ڭ͑ͯ͘Εͳ͍΋ͷ • ιϑτ΢ΣΞ͕଎͍͔Ͳ͏͔ • ໾ʹཱ͔ͭʢΧωΛੜΉ͔ʣ • ֦ுੑʹ༏Ε͍ͯΔ͔ (͋͘·Ͱෳࡶ౓ͷ࿩Ͱ͋Δ͜ͱʹ஫ҙ)