Saya memiliki fungsi pengecekan nilai, mirip dengan fungsi pengecekan nomor kartu kredit, yang diteruskan dalam sebuah string, dan perlu memeriksa bahwa nilainya dalam format yang tepat.
Jika itu format yang benar, ia perlu mengembalikan true.
Jika itu bukan format yang benar, ia perlu mengembalikan false, dan juga memberi tahu kami apa yang salah dengan nilainya.
Pertanyaannya adalah, apa cara terbaik untuk mencapai ini?
Inilah beberapa solusi:
1. Gunakan kode integer / enum return untuk menandakan makna:
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];
}
Saya tidak suka solusi ini karena membutuhkan implementasi di sisi penelepon.
2. Buat kelas 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();
}
Solusi ini rapi, tetapi sepertinya membutuhkan banyak tenaga / menciptakan kembali roda.
3. Gunakan pengecualian.
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();
}
Saya tergoda untuk menggunakan solusi ini, tetapi saya diberitahu bahwa Anda tidak boleh menggunakan pengecualian untuk logika bisnis.