SlideShare une entreprise Scribd logo
1  sur  60
『断捨
離』
Natsuki Nishino
断捨離
の荷物 整理
わるかな終 …
から日頃
しておけば掃除
よかったなぁ…
サービスの
コードも
じです同
こんな経験
ありませんか?
※ に い はご ください刺激 弱 方 注意
をしている何
コードなのか
わからない
… やってみた
ら
あぁ… ( 略
たりが心当
ない は方
おやすみなさい
( ´ ・ ωゞ ) Zzz
やっと本題
TDDって
ってますか知 ?
Test
Dri ven
Devel opment
テスト駆動開
発
TDDは
する、キレイな『動作
コード』
を す のひとつ目指 手法
くコードって動 ?
いているコード普段書
は
が いているハズ大半 動
( ・ _ ・ ; ) デスヨネ ?
キレイなコードって?
さっき なくなった切 現
が象
きないもの起
( `・ ω・ ´ )
や の が仲間 明日 自分
なんだこれ… ( ; ´ Д
` )
って
を えないコードの頭 抱
こと
する、キレイなコード動作
を
す のりは目指 道 2 種類
• にキレイにする先
• に くようにする先 動
まずキレイに いてから書
くようにしていく動
まず くようにしてから動
キレイにお する掃除
キレイに していく変更 間
に
していないこと は“壊 ”
テストコードが する担保
どうやってやるの?
1.目標を考える
2.その目標を示すテストを書
く
3.実行して失敗させる ( Red)
4.テストを成功させるコード
を書く ( Gr een)
5.テストの成功を維持したま
ま
@Test
public void testGetLargeNum () {
TwoNumber twoNum = new TwoNumber(1, 5);
assertThat(twoNum.getLargeNum(), is(5));
}
public int getLargeNum () {
return 0;
} RED…
2つの を して、 きい を す整数 渡 大 方 返
いたテストを させる書 成功
@Test
public void testGetLargeNum () {
TwoNumber twoNum = new TwoNumber(1, 5);
assertThat(twoNum.getLargeNum(), is(5));
}
public int getLargeNum () {
return y;
}
GREEEEEEEEEN!!!!
のテストを く、 する次 書 失敗
@Test
public void testGetLargeNum2 () {
TwoNumber twoNum = new TwoNumber(6, 2);
assertThat(twoNum.getLargeNum(), is(6));
}
public int getLargeNum () {
return y;
} RED…
いたテストを させる書 成功
public int getLargeNum () {
int result = 0;
if ( x > y ) {
result = x;
} else {
result = y;
}
return result;
}
GREEEEEEEEEN!!!!
を したまま、お する成功 維持 掃除
public int getLargeNum() {
return x < y ? y : x;
}
GREEEEEEEEEN!!!!
ったその作 場
で
お毎日 掃除!
毎日断捨離!
テストはコードの命綱
お が掃除
こわくな
い!
の で実際 開発
やってみたら
こんな Happy が
ゴールが なので明確
しない迷走 !
テスト きにくいな書
…
と ったら を思 設計 疑
う
テストを てやすい充
コードになる
メソッドが単機能化
する
Si mpl e i s t he best .
コードがキレイだと
や が調査 改修 簡単!
コードがキレイだと
あれ…? ( ・ _ ・ ; )
が きにくい起 !!
テストコードがあると
バグを んだら生
えてくれる教 !!
に定時
れる帰 ! !
もコードも私物
にキレイに日常的
しておきたいですねぇ
。
な は特別 環境 不要!
おためしあれ~
20150703 『断捨離』TDDとは

Contenu connexe

En vedette

F.NarcisiHandDrawingPortfolio
F.NarcisiHandDrawingPortfolioF.NarcisiHandDrawingPortfolio
F.NarcisiHandDrawingPortfolioFederica Narcisi
 
Dynamic DSM - General Usage
Dynamic DSM - General UsageDynamic DSM - General Usage
Dynamic DSM - General UsageDynamic DSM
 
懶人版慕立達
懶人版慕立達懶人版慕立達
懶人版慕立達千蘊 沈
 
Elionetwork Brochure LR
Elionetwork Brochure LRElionetwork Brochure LR
Elionetwork Brochure LRMay Chiang
 
Business Card Design
Business Card DesignBusiness Card Design
Business Card DesignAriful Nirob
 
BusinessONE PPT for Sustain
BusinessONE PPT for SustainBusinessONE PPT for Sustain
BusinessONE PPT for SustainKevin Jiang
 
Transformative Enterprise Architecture
Transformative Enterprise ArchitectureTransformative Enterprise Architecture
Transformative Enterprise ArchitectureAtul Apte
 
Dynamic DSM Features - Reports & Dashboards
Dynamic DSM Features - Reports & DashboardsDynamic DSM Features - Reports & Dashboards
Dynamic DSM Features - Reports & DashboardsDynamic DSM
 
Dynamic DSM Tracking Software Features
Dynamic DSM Tracking Software FeaturesDynamic DSM Tracking Software Features
Dynamic DSM Tracking Software FeaturesDynamic DSM
 
Fonterra_TreatmentSample
Fonterra_TreatmentSampleFonterra_TreatmentSample
Fonterra_TreatmentSampleJo Rittey
 
VoicesAfrica Panel Book
VoicesAfrica Panel BookVoicesAfrica Panel Book
VoicesAfrica Panel BookVoices Africa
 
Autism Spectrum Disorder
Autism Spectrum DisorderAutism Spectrum Disorder
Autism Spectrum DisorderAmanda Lozano
 

En vedette (16)

F.NarcisiHandDrawingPortfolio
F.NarcisiHandDrawingPortfolioF.NarcisiHandDrawingPortfolio
F.NarcisiHandDrawingPortfolio
 
Dynamic DSM - General Usage
Dynamic DSM - General UsageDynamic DSM - General Usage
Dynamic DSM - General Usage
 
懶人版慕立達
懶人版慕立達懶人版慕立達
懶人版慕立達
 
RAE
RAERAE
RAE
 
Elionetwork Brochure LR
Elionetwork Brochure LRElionetwork Brochure LR
Elionetwork Brochure LR
 
Airbag Clock Spring Catalogue
Airbag Clock Spring CatalogueAirbag Clock Spring Catalogue
Airbag Clock Spring Catalogue
 
Business Card Design
Business Card DesignBusiness Card Design
Business Card Design
 
BusinessONE PPT for Sustain
BusinessONE PPT for SustainBusinessONE PPT for Sustain
BusinessONE PPT for Sustain
 
Transformative Enterprise Architecture
Transformative Enterprise ArchitectureTransformative Enterprise Architecture
Transformative Enterprise Architecture
 
Dynamic DSM Features - Reports & Dashboards
Dynamic DSM Features - Reports & DashboardsDynamic DSM Features - Reports & Dashboards
Dynamic DSM Features - Reports & Dashboards
 
Dynamic DSM Tracking Software Features
Dynamic DSM Tracking Software FeaturesDynamic DSM Tracking Software Features
Dynamic DSM Tracking Software Features
 
Licensing specialist
Licensing specialistLicensing specialist
Licensing specialist
 
F.NarcisiPortfolio
F.NarcisiPortfolioF.NarcisiPortfolio
F.NarcisiPortfolio
 
Fonterra_TreatmentSample
Fonterra_TreatmentSampleFonterra_TreatmentSample
Fonterra_TreatmentSample
 
VoicesAfrica Panel Book
VoicesAfrica Panel BookVoicesAfrica Panel Book
VoicesAfrica Panel Book
 
Autism Spectrum Disorder
Autism Spectrum DisorderAutism Spectrum Disorder
Autism Spectrum Disorder
 

20150703 『断捨離』TDDとは

Notes de l'éditeur

  1. 「断捨離」 聞いたことある言葉だと思いますが こんな意味でした。
  2. 既存のコードを読んでみたけど、複雑すぎてよくわからない よくわからないから、変えるのが危険
  3. 色んなことしてて、結局なにしてくれる人なのかよくわからない
  4. 本番での経験はないと祈りますが (つぎへ
  5. 具体的には・・・・・(つぎへ
  6. つまりは!(つぎへ
  7. 動く、キレイ という2つの要素があるので、2つを達成するまでの道のりは2つあります
  8. こだわり出したらキリがないです
  9. 作ってみたら他とあわないってことが起きやすいです
  10. いくらおしゃれでも、ドアが開かなくなる場所に家具は置けないですよね
  11. 「この引数を渡したら、こんな戻り値がほしい」といった目標をひとつ考えて、それをテストコードに落とします 当然、未実装なのでこのテストは失敗します その後、テストが成功するように目的のコードを書きます テストが成功したら、成功を維持したまま、中身をきれいにしていきます
  12. Javaでサンプルを書いてみました 2つの整数を引数に渡したら、値が大きい方を返すメソッドを作るとします 1と5を渡したら、5を返してほしいので期待値は5になります 当然、このとき目的のコードは未実装なので、0が返されて失敗します
  13. テストが成功するように、コードを直します 第一引数からx, yだったとすると、とりあえずyを返せば成功しますよね これ以上お掃除できなそうなので、次のテストを考えます
  14. 同じメソッドに、次のパターンのテストを書きます 今度は6と2を渡したら、期待値は6です 先ほどのコードだと、第2引数を固定で返すので、このテストは失敗します
  15. 1つめと2つめ、両方のテストが成功するようにコードを修正します テストは成功したけど、なんかもっと簡単に書けそうですよね
  16. というわけで、テストの成功を維持したまま、中身をお掃除します こんなに短くなったw
  17. というふうに テストを書く 失敗する 成功させる お掃除する というサイクルを繰り返していきます