Index: [Article Count Order] [Thread]

Date:  Mon, 5 Jun 2000 00:27:26 +0900
From:  Yutaka Kamite <y-kamite@....jp>
Subject:  [XP-jp:00488] XP Installed26 Part4 Test-first, by Intetion
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <393A750517E.1D21Y-KAMITE@....jp>
Posted:  Mon, 05 Jun 2000 00:25:57 +0900
X-Mail-Count: 00488


上手です。
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)