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
Hiraku NAKANO
March 01, 2016
Technology
12k
36
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
クソコードの測り方
PHPBLT#3 で話した内容です。
Hiraku NAKANO
March 01, 2016
More Decks by Hiraku NAKANO
See All by Hiraku NAKANO
iD決済を支える技術 / #merpay_techtalk
hirak
33
7.3k
github.com/mercari の今と昔 /github-mercari
hirak
8
3.2k
PHPStanで始める継続的静的解析 #phperkaigi /php-static-analysis
hirak
14
54k
極める!メソッドチェーン #phpstudy / fluent-interface
hirak
8
3.1k
evalこそパワー #phpkansai / phpkansai2017
hirak
2
1.7k
PHPのエラーと例外再入門 / php-error-and-exception
hirak
19
20k
メルカリ JP Tech Side / mercari-jp-tech-side
hirak
7
2k
グローバル展開を支える量子的なサービス設計 #mercariday / mercariday2017-api
hirak
22
14k
Composerプラグインを作ってみよう /phpcon2016
hirak
5
14k
Other Decks in Technology
See All in Technology
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
5k
Dylib Hijacking on macOS: Dead or Alive?
patrickwardle
0
130
EUDIWの枠組みを出発点に民間エコシステムの在り方を考える(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
340
1.5時間を無駄にして学んだwsl2におけるaptとsnapの選択と仕組み
yosaka0123
0
460
NANDでも描画したい!
nichica906
3
810
最新技術に積極チャレンジ!EKS共通基盤のこれまでとこれから
daitak
0
250
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
1
880
Windows の互換機能 - 古いプログラムはなぜ動作できるのか
murachiakira
PRO
0
130
AI時代のデータ基盤を考える問い
pacocat
0
740
Claude Codeの体系的な理解と知識のフック
oikon48
8
6k
Cloudflare製品を活用した AIガバナンス実践入門 / AI governance with Cloudflare Service
delta_tech
1
120
会計事務所と顧問先の契約関係をOIDC・OAuthで表現する
terara
0
490
Featured
See All Featured
Darren the Foodie - Storyboard
khoart
PRO
3
3.8k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
450
Designing for Performance
lara
611
70k
Making the Leap to Tech Lead
cromwellryan
135
10k
GraphQLとの向き合い方2022年版
quramy
50
15k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
560
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
900
Mobile First: as difficult as doing things right
swwweet
225
10k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
260
Practical Orchestrator
shlominoach
191
12k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
Transcript
Ϋιίʔυͷ ଌΓํ PHPBLT #3 @Hiraku
ࣗݾհ • த (@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 method to be CRAPpy.
Googleͷϒϩά͕ৄ͍͠ http://googletesting.blogspot.jp/2011/02/this-code-is-crap.html
None
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ͷي
None
None
None
ࠓͷ·ͱΊ • ΫιίʔυΛఆྔతʹఆ͢Δํ๏͕͋Δ • ଌͬͯΈΔͱ໘ന͍ΑɺPHPUnitͰΘ͔ΔΑ • Ғͦ͏ʹղઆ͚ͨ͠ͲScrutinizerείΞ10.00 ·ͩ౸ୡͯ͠ͳ͍
ิɿ CRAP͕ڭ͑ͯ͘Εͳ͍ͷ • ιϑτΣΞ͕͍͔Ͳ͏͔ • ʹཱ͔ͭʢΧωΛੜΉ͔ʣ • ֦ுੑʹ༏Ε͍ͯΔ͔ (͋͘·ͰෳࡶͷͰ͋Δ͜ͱʹҙ)