河野真治 @ 琉球大学情報工学です。

今週末は、琉大で勉強会があるそうです。
    http://tinyurl.com/2rrpna

前回のJavaでDartsゲームを作るXP祭で、実は使ってました。感想
としては「別に、テスト用のルーチンを持つクラスを別に作るの
でいいじゃん」だった。

で、JUnit 読むというので、「それは、つまらないんじゃないか...」
と思っていたんですが、最新の JUnit 4.3.1 を見ると... 

 annotation でテスト用のmethodを識別する
 source は Java 1.5 の Generic バリバリで書き直してある

で、7,000行もあるということが判明... いや、まぁ、7,000行ぐ
らいだと3,4時間で読んだりしますが... (問題は、普通の人が来
る勉強会で、そんなことして良いかどうかだ.. .) 

というわけで、昨日は(あわてて)みんなで予習してました。

Eclipse で JUnit のソースを動かすのに1時間ぐらいかかってま
した。あはは。現場でやるよりは、ましか。

annotation は reflection で取って来るわけね。わりと、素直な
プログラミングで、あまり、オブジェクト指向っぽくはないよう
です。テスト毎にテスト用のオブジェクトを作るみたいなことを
すれば、それっぽくなるかも。

でも、Unix なプログラマだったら、find + grep でテストメソッ
ドリストを作って、それから、テストクラスを生成するって、や
ると思う。Java に閉じてやるのが何が嬉しいかって言うと、非Unix
なプログラマがうれしいぐらいって感じ? 

Generic バリバリに関しても、あんまり良い印象はなかったです。
つまり、

 もっと、ちゃんとオブジェクトを細かく作っていれば、そんな
 Wild Card Generic をたくさん使う必要はないんだよ

ってことだね。型の階層構造を抽象化出来てないので、cast(型変
換) のsyntax sugarでしかない Generic を多用する羽目になると
いう感じ。特に Wild Card は見栄えが悪くなるだけ。まぁ、Generic/
Java 1.5 の勉強がてら作ったという感じだな。

Java の配列は型がなかったので、もともとcastして使っていたん
だけど、Generic で、そのcastをconsistentに出来るってのは、
うれしいんだけどね。

まぁ、もう少し読んでいくと、面白いところがあるかも知れない...
でも、JUnit 作っている人って、デザインパターン知らないんじ
ゃないかと、ちょっと思いました。まぁ、手続き型でプログラム
して何が悪いってことではあるが。

勉強会自体は、JUnit 入門 + Eclipse の使い方(Eclipse を使っ
たソースの読み方)勉強会になるんじゃないかな。

---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科