大村です。
" [XP-jp:00898] テストのためだけのメソッド"からのスレッドの議論が
面白くて、元をたどってこのあたりにやってまいりました。
firo@....jp wrote:
"[XP-jp:00889] Re: VXP タスク3 --Config"
>> private void createCorrectConfigFile(String filename) {
>> FileOutputStream fo;
>> try {
>> fo = new FileOutputStream(filename);
>> } catch (FileNotFoundException e) {
>> throw new RuntimeException("unable to open config file");
>> }
>> PrintWriter pw = new PrintWriter(fo);
>> pw.println("X-ML-Name: extremeprogramming-jp");
>> pw.println("X-Mail-Count: 00796");
>> // ...
>> }
・・・
>> private void createCorrectConfigFile(filename) {
>> Config aConfig = new Config();
>> aConfig.setName("extremeprogramming-jp");
>> // ...
>> aConfig.save(filename);
>> }
>>
>> の様に Config にファイルに吐き出す機能を追加すればもっときれいですね。
>
>これについては、現時点でConfigにsetNameとかsaveの機能が
>必要だとまではまだ考えられていません。カウンタについては、
>その必要性を示唆していますが、これについては別のタスクで
>やりたいと考えいます。名前については、示唆すらもされていま
>せん。ですから、YAGNIの原則からいって、seNameやsaveは、
>今のところ作るべきでないと判断しています。
save()を作りこむか作らないかという議論の他に、次のような論点もあるかなと
思いました。
つまり、この例の場合、save()は、configファイルのテストという本来の対象には含まれない
methodですが、それをここで使用してしまうと、createCorrectConfigFile()が、無関係な
methodに依存してしまう、という点です。
つまり、「テストではそのテストに関係のないmethodは使わない」という
ルールがあってもいいのではないでしょうか。(オッカムの剃刀みたいなもんですね)