上手です。
XP Installed26 Part4 Test-first, by Intetion
まとめの初回分です、SmalltalkとJavaのコードよろしくお願いします。
ページ まとめ Java への変換担当者
----------------------------------------------
Part 1 189 - 192 上手
Part 2 193 - 196 上手
Part 3 197 - 200 上手
Part 4 201 - 204* 上手
---------------------------------------------
Smalltalk の解説は 「さくさくSmalltalk」(梅澤さん、今野さん他共訳)参考に
して基本的な部分だけ埋めてあります。チェックおよび追加をお願いします。
=== Page 201
Chetはコードを書き上げる。これはかなり標準的なSmalltalkのイディオム(慣用
句)なので、彼は全てを一行に書く。コードの意味は、summary の中で同じ名前
の Sum を探して、もしあればそれに、なければ新しくその名前のものをつくって、
それに格納する。いずれの場合でも、新しいか既存の Sum が戻される。
#broken it up のフレーズの意味不明
<Smalltalk>
=== Page 201 Code 1
___Summarizer
10:56:40
matchingSum:aSum
^summary
detect:[:each|each name = aSum name]
ifNone:[summary add:(Sum
name:aSum name
amount:0)]
解説:
お願いします。
</Smalltalk>
テストを走らす。Sum が追加( add )の方法を理解しなかったので、走らない。手
早くそれをつくる。
<Smalltalk>
=== Page 201 Code 2
___Sum
10:58:40
add:aSum
amount:=amount + aSum amount
</Smalltalk>
またテストを走らす。動かない。Sum のcollection ではなく、Summarizer が返
って来る。これは、結果を answer するのを忘れていることを意味する。
#以下は漫才のようだ。
Ron Jeffriesのタイプ1エラーだ。collectionを answer してない。私のパート
ナーはどこ?
Chet ドライブ中。君が私をヘルプして。
Ron おお。
<Smalltalk>
=== Page 201 Code 3
___Summarizer
10:59:31
summary
self process:first.
self process:second.
^summary
</Smalltalk>
=== Page 202
テストを走らす。それは動いた。ちょっと祝福して、ベルがあったら鳴らすのに
と思う。それから、もう動いているんだから、クリーンアップ出来るか知るため
にコードレビューを始める。
Chet process はそんなにいい名前じゃないね。
Ron summarize とも呼べるね・・
Chet OK。
<Smalltalk>
=== Page 202 Code 1
___Summarizer
11:04:45
summary
self summarize:first.
self summarize:second.
^summary
</Smalltalk>
Chet はテストを走らす。ブレークする、summarize: メソッドが無い。
process: メソッドをリネームする。
</Smalltalk>
=== Page 202 Code 2
___Summarizer
11:04:53
summarize:aCollection
aCollection do:[:each|self summarizeItem:each]
</Smalltalk>
Chetはテストを走らし、それは動く。しかし彼は新しいメソッドが気に入らない。
Chet おっと。この際、processItem: を summarizeItem: に変えた方がいいね。
Ron いいね。
<Smalltalk>
=== Page 202 Code 3
___Summarizer
11:05:30
summarize:aCollection
aCollection do:[:each|self processItem:each]
</Smalltalk>
彼は、summarize: が summarizeItem: を送るように変更する。
<Smalltalk>
=== Page 202 Code 4
___Summarizer
11:05:30
summarize:aCollection
aCollection do:[:each|self summarizeItem:each]
</Smalltalk>
テストを走らす。Chetは summarizeItem: が定義されていないことを”発見”し、
processItem: を summarizeItem: にリネームする。
=== Page 203
<Smalltalk>
=== Page 203 Code 1
___Summarizer
11:05:42
summarizeItem:aSum
(self matchingSum:aSum)add:aSum
</Smalltalk>
もう一度テストを走らす。この時点で我々は仕上げた仕事を見る、いい内容だ。
ストップして、昼食に行こう。
まで ----------------------------------------------
オリジナル http://www.xprogramming.com/
Copyright (c) 1999, REJeffries et al. (ronjeffries@....org)