Ben bir dize geçirilen ve değeri doğru biçimde olup olmadığını kontrol etmek için gereken bir değer kontrol fonksiyonu, bir kredi kartı numarası kontrol fonksiyonu gibi bir şey var.
Doğru biçimse, doğru dönmesi gerekir.
Doğru biçim değilse, false döndürmesi ve aynı zamanda değerle ilgili sorunun ne olduğunu bize bildirmesi gerekir.
Soru şu ki, bunu başarmanın en güzel yolu nedir?
İşte birkaç çözüm:
1. Anlamları belirtmek için tamsayı / numaralandırma dönüş kodlarını kullanın:
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];
}
Bu çözümü sevmiyorum, çünkü işlerin arayan tarafında uygulama gerektiriyor.
2. Bir returnCode sınıfı oluşturun
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();
}
Bu çözüm düzenli, ancak tekerleği aşırı doldurmak / yeniden icat etmek gibi görünüyor.
3. İstisnalar kullanın.
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();
}
Bu çözümü kullanmak için cazipim, ancak iş mantığı için istisnalar kullanmamanız gerektiği söylendi.