Spock のメソッド名は識別子でなくてもよい
Java プログラマが 始めて Spock のコードを目にすると、何か違和感を感じると思います。
たぶん それは Java とは異なる 『メソッド』 と 『ブロック』 が原因だと思います。(もちろん Groovy シンタックスもですが...)
と言うことで、今回はメソッド名についてです。(ブロックについては そのうち...)
実は Spock のメソッドには Java のメソッドとは異なり 識別子以外の名称を使うことができるんです。
もう少し正確に言うと、シングルクォートで囲えば 識別子で使える文字でなくても使えるんです。
日本語はもちろんのこと "." や "( )" 半角空白、改行文字と言った通常 Java のメソッドでは使えない文字も使えます。
しかも 数字で始まるメソッド名だってちゃんと使えるんです。
ちなみに 『JavaSE 7でメソッド名に使えなくなった文字』 だって使えます。
一応、厳密に書いておくと...
- Character#isJavaIdentifierStart(char) が false を返す文字で始まってもよい
- Character#isJavaIdentifierPart(char) が false を返す文字が含まれていてもよい
ということで、Spock のメソッド名には
そのメソッドの仕様を自分達が分かる言葉で簡潔に説明した文言
をそのまま使うのが良いです。
あと折角 最初の文字に数字が使えるので 仕様書のように分かりやすく項番を振っておくのもおススメです。
例えばこんな感じ...
def '1.1. 要素の中で一番大きな値を返す'() { ... } def '1.2. 要素がない場合は null を返す'() { ... } def '2.1. 要素の中で一番小さな値を返す'() { ... } def '2.2.要素がない場合は null を返す'() { ... }
これをEclipse のアウトラインで見てみるとこんな感じです。
これはまさに仕様書...
いつかホントにドキュメントがなくなるときが来るかもしれませんね。