ホソカワです。
on 00.9.16 10:20 PM, firo@....jp at firo@....jp wrote:
> 矢崎です。
>
> firo@....jp wrote:
>
>> (太郎さん)
>> コンパイル、テスト、よし通った。
>> 後、$-MemberList行がなかった場合も同じような処理
>> をすればConfigはおしまいかな?
>>
>
> (太郎さん)
> ということで、$-MemberListについても同じような対応を
> しました。
>
> ConfigTestに
> testNoMemberListConfig1、2、3を追加
>
> Configの
> String getMemberListFileNameの最初に以下の2行を追加
> if (nameOfMemberListFile == null) throw new IllegalArgumentException();
> if (nameOfMemberListFile.length() == 0) throw new IllegalArgumentException();
>
もうちょっときれいになると思います。name と nameOfMemberListFile が正しいか
どうかチェックするメソッドを導入します。(Once and Only Once に従って、
isEmptyString にまとめました。)
private boolean isValidMLName(String name) {
return !isEmptyString(name);
}
private boolean isValidMemberListFileName(String fileName) {
return !isEmptyString(fileName);
}
private boolean isEmptyString(String str) {
return str == null || str.length() == 0;
}
それから、これは、ユーザーに有意義な情報ということで、例外も追加します。
class BadMLName extends Exception { }
class BadMemberListFileName extends Exception { }
それで、class Config を refactor すると、
/*
* @(#)Config.java
*/
package XP.jp.co.esm.wiki.extremedomo;
import java.util.*;
import java.io.*;
public class BadMLName extends Exception { }
public class BadMemberListFileName extends Exception { }
public class Config {
public Config(String nameOfConfigFile) {
BufferedReader bufIn = null;
try {
bufIn = new BufferedReader(new FileReader(nameOfConfigFile));
String fileLine;
while (true) {
fileLine = bufIn.readLine();
if (fileLine == null)
break;
if (fileLine.startsWith("X-ML-Name:")) {
name = fileLine.substring("X-ML-Name:".length()).trim();
if (!isValidMLName(name))
throw new BadMLName();
}
if (fileLine.startsWith("$-MemberList:")) {
nameOfMemberListFile =
fileLine.substring("$-MemberList:".length()).trim();
if (!isValidMemberListFileName(nameOfMemberListFile))
throw new BadMemberListFileName();
}
if (fileLine.startsWith("X-"))
xList.add(fileLine.trim());
}
} catch (FileNotFoundException e) {
// What is exception handling carried out?
throw new IllegalArgumentException();
} catch (IOException e) {
// What is exception handling carried out?
} finally {
try {
if (bufIn != null)
bufIn.close();
} catch (Exception e) {
}
}
}
public String getName() {
return name;
}
public Iterator getXInfo() {
return xList.iterator();
}
public String getMemberListFileName(){
return nameOfMemberListFile;
}
private boolean isValidMLName(String name) {
return !isEmptyString(name);
}
private boolean isValidMemberListFileName(String fileName) {
return !isEmptyString(fileName);
}
private boolean isEmptyString(String str) {
return str == null || str.length() == 0;
}
private String name;
private List xList = new ArrayList();
private String nameOfMemberListFile;
}
--
Kaoru Hosokawa
khosokawa@....com