In <B55F425F.1ABD%khosokawa@....com> (Jun.03 2000 23:48 JST),
``[XP-jp:00463] Re: FW: XP Installed Smalltalk Code Samples inJava'',
khosokawa@....com says:
= そう、Test First Programming は、Smalltalkならではのプログラム手法なのかもし
= れません。Java や C++ は、定義されていないメソッドをコールするとコンパイルエ
= ラーになってしまいますね。本当は、章全体をJavaに合うように書き直すべきでしょ
= うね。
=
= Chet: …テスト書いたよ。
= Ron: じゃ、試そうか?
= Chet: ちょっと待って!このままじゃ、コンパイルエラーになるだけだよ。空のメソッ
= ドを定義しないと…
= Ron: ハァー。Java 止めて、Smalltalk で開発しようか?
しかし、JavaやC++の場合には、コンパイルエラーの検出はコンパイ
ラ組み込みのテストケースだと考えられなくもありません。実際、
Smalltalkの場合でも、メソッド未定義のままで流すテストはエラー
になります。(エラーになることをあらかじめ確信の上でそれでもテ
ストを流すのは、ちゃんとテストされていることの確認、「テストが
機能していることのテスト」でしょうね。)
Javaへの翻訳で、ひょっとすると厄介かもしれないのは、多態に関す
る違いです。例えば、SummarizerクラスのsummarizeItem:メソッドは、
SumクラスとOrderedCollectionクラスのadd:メソッドを利用していま
すが、ここまでの論述で、SumとOrderedCollectionとの間になんらか
の関係があるとは明示されていません。Javaへの翻訳のためには、きっ
とこの点を補う必要があると思います。
あと、ブロッククロージャ(detect: [...] ifNone: [...]なんてのが
ありましたね)の翻訳も、工夫が必要かもしれません。
= > 前に出てたようなidiom的な違いもありますし。(Smalltalkは何も
= > 返すものがないようなメソッド、例えばセッターで ^self を返す)とか
= > 型がコードにでてこないとか。
= >
=
= そうそう。Java スタイルに書き直すところまでやりたいと思っています。
まずは「直訳」してみて、それから、「超訳 ;-)」してみるとか。
-.- . -. -.
Ken Nakagaki (kenn@....nu is NOT for private E-Mail)
「人は船ではない。人は会社ではない」-- Gerry Spence