मेरे पास वैल्यू चेकिंग फंक्शन है, क्रेडिट कार्ड नंबर चेकिंग फंक्शन की तरह कुछ, जो एक स्ट्रिंग में पास किया गया है, और यह जांचने की जरूरत है कि वैल्यू सही फॉर्मेट की है।
यदि यह सही प्रारूप है तो इसे सही तरीके से वापस करने की आवश्यकता है।
यदि यह सही प्रारूप नहीं है, तो इसे गलत तरीके से वापस करने की आवश्यकता है, और हमें यह भी बताएं कि मूल्य में गलत क्या है।
सवाल यह है कि इसे हासिल करने का सबसे अच्छा तरीका क्या है?
यहां कुछ उपाय दिए गए हैं:
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. एक रिटर्नकोड क्लास बनाएं
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();
}
मुझे इस समाधान का उपयोग करने का लालच है, लेकिन मुझे बताया गया है कि आपको व्यावसायिक तर्क के अपवादों का उपयोग नहीं करना चाहिए।