「やる夫で学ぶTDD」八日目 ボウリングのスコア計算 現在のフレームって? #ytdd

某SIerで if(true == false) のような神コードのインスペクションで廃人化しているやらない夫こと太田先生の「やる夫で学ぶTDD」八日目です。
3
Kenichiro Ota @oota_ken

やる夫:if (!firstThrow || (firstThrow && pin == 10)) { に修正すればいいお! || 以降の条件式がストライク化の判定だお #ytdd

2011-02-15 00:57:34
Kenichiro Ota @oota_ken

やらない夫:これそのまま条件式に書くと分かりにくいから、テスト成功してからでいいから、isStrike(pin) のようにインラインメソッド化しないか? #ytdd

2011-02-15 00:58:30
Kenichiro Ota @oota_ken

やる夫:それの方が分かり易いから、テスト合格したら、やるお!成功したお。リファクタリングもやって再テストしたお。Eclipseはメソッドの抽出が簡単にできるから便利だお。#ytdd

2011-02-15 00:59:39
Kenichiro Ota @oota_ken

やらない夫:実はこのままだと、10フレーム目でストライクやスペアを取った時に、11フレーム目(スペアの場合)と12フレーム目(ストライクの場合)おかしくなってしまうことが、10フレーム目のテストを用意すると分かる。 #ytdd

2011-02-15 01:01:56
Kenichiro Ota @oota_ken

やる夫:こんな感じのテストかお?実行すると・・・たしかに、10フレーム目でストライクとスペア取ると10フレームにならず、12と11になってしまうお! #ytdd http://twitpic.com/3zs485

2011-02-15 01:04:47
拡大
Kenichiro Ota @oota_ken

やらない夫:ゆえに、やる夫が単純に crrentFrame++; としたのはNGで、10フレーム目を考慮して、currentFrame = Math.min(10, currentFrame + 1); と10フレーム目で投げた場合に突き抜けないようにする必要がある #ytdd

2011-02-15 01:06:18
Kenichiro Ota @oota_ken

やる夫:これでどうかお!全テストケース合格したお! #ytdd http://twitpic.com/3zs5db

2011-02-15 01:07:16
拡大
Kenichiro Ota @oota_ken

やる夫:現在のフレームを計算するだけなのにやたらにえぐかったお。後はスコア計算かお? #ytdd

2011-02-15 01:07:50
Kenichiro Ota @oota_ken

やらない夫:それはもう二人とも眠さが危険状態なので、明日にしよう。でも、すでに課題2でフレームごとにスコア計算していくというクラスは書いているので、現在のフレームが分かっているなら、流用するのは簡単だな。 #ytdd

2011-02-15 01:09:06
Kenichiro Ota @oota_ken

やる夫:分かったおー残りは明日頑張るおー #ytdd

2011-02-15 01:09:23
Kenichiro Ota @oota_ken

すみません。劇ねむなので、残りは明日ということでよろしくです。明日は現時点のスコア計算までします。一部既にScoreクラスがスタブでいたりしますがそれはご愛嬌。ではまた明日。 #ytdd

2011-02-15 01:10:10
埴科拓安 @hanisinatakuan

タグ付け忘れた><「やる夫で学ぶTDD」AA化http://changegetter1.blog63.fc2.com/ #ytdd

2011-02-15 02:08:36