私は、文字列で渡される値確認機能を持っています。これは、クレジットカード番号確認機能によく似ており、値が正しい形式であることを確認する必要があります。
適切な形式の場合は、trueを返す必要があります。
正しい形式でない場合は、falseを返す必要があり、値の何が問題なのかも教えてください。
問題は、これを達成する最も良い方法は何ですか?
以下にいくつかの解決策を示します。
1.整数/列挙戻りコードを使用して、意味を示します。
String[] returnCodeLookup =
[
"Value contains wrong number of characters, should contain 10 characters",
"Value should end with 1",
"Value should be a multiple of 3"
]
private int valueChecker(String value)
{
/*check value*/
return returnCode;
}
rc = checkValue(valueToBeChecked);
if rc == 0
{
/*continue as normal*/
}
else
{
print("Invalid value format: ") + returnCodeLookup[rc];
}
このソリューションには、呼び出し側での実装が必要なので、このソリューションは好きではありません。
2. returnCodeクラスを作成します
Class ReturnCode()
{
private boolean success;
private String message;
public boolean getSuccess()
{
return this.success;
}
public String getMessage()
{
return this.message;
}
}
private ReturnCode valueChecker(String value)
{
/*check value*/
return returnCode;
}
rc = checkValue(valueToBeChecked);
if rc.getSuccess()
{
/*continue as normal*/
}
else
{
print("Invalid value format: ") + rc.getMessage();
}
この解決策はきちんとしていますが、やり過ぎ/車輪の再発明のようです。
3.例外を使用します。
private boolean valueChecker(String value)
{
if int(value)%3 != 0 throw InvalidFormatException("Value should be a multiple of 3";
/*etc*/
return True;
}
try {
rc = checkValue(valueToBeChecked);
}
catch (InvalidFormatException e)
{
print e.toString();
}
このソリューションを使用したいのですが、ビジネスロジックに例外を使用しないでくださいと言われました。