मैं एक कक्षा पर काम कर रहा हूं जो एक वेब सेवा के लिए अनुरोध डीटीओ भेजता है। मुझे भेजे जाने से पहले अनुरोध को सत्यापित करने की आवश्यकता है।चक्रवात जटिलता को कम करने के लिए कैसे?
अनुरोध 3 अलग-अलग स्थानों से भेजा जा सकता है और प्रत्येक "अनुरोध प्रकार" के लिए अलग-अलग सत्यापन नियम हैं, उदा। अनुरोध 1 में नाम और फोननंबर होना चाहिए, अनुरोध 2 में पता होना चाहिए, आदि)
मेरे पास एक डीटीओ है जिसमें फ़ील्ड (नाम, पता, शहर, फोननंबर इत्यादि) की एक लंबी सूची है और यह वही डीटीओ भेजा गया है यह किस तरह का अनुरोध है।
मैंने 3 अलग-अलग सत्यापन विधियां बनाई हैं और उचित विधि कहलाए जाने के प्रकार के आधार पर।
इन तरीकों में से प्रत्येक में मेरे पास प्रत्येक अनुरोध प्रकार के लिए आवश्यक फ़ील्ड की जांच करने के लिए लंबी सूची है।
private void validateRequest1(Request request) {
StringBuilder sb = new StringBuilder();
if (null == request) {
throw new IllegalArgumentException("Request is null");
}
if (isFieldEmpty(request.getName())) { *see below
sb.append("name,"));
}
if (isFieldEmpty(request.getStreet())) {
sb.append("street,"));
}
...
isFieldEmpty()
चेकों बातिल और isEmpty()
के लिए स्ट्रिंग और रिटर्न एक बूलियन
यह मैं उन तरीकों में से एक में 28 की एक cyclomatic जटिलता देता है तो मेरे सवाल यह है कि .. यह इस जटिलता को कम करने के लिए संभव है? - यदि हां, तो मैं ऐसा करने के बारे में कैसे जाऊं?
अंत में मैं क्षेत्रों का एक बहुत जांच करने की आवश्यकता है और मैं नहीं देख सकते हैं कि यह कैसे चेकों के बहुत सारे बिना किया जा सकता:/
मेरा विचार होगा: कुछ प्रकार की 'फ़ील्ड चेकर' ऑब्जेक्ट का उपयोग करें जो खालीपन (या कुछ अन्य) जांच को घेर लेता है, और कार्रवाई की जाने वाली कार्रवाई ('sb.append()') आदि, और एक सूची में लूप ऐसी वस्तुओं। इससे कोड स्पष्ट हो जाता है क्योंकि आपको उस चेक के आउटपुट और इनपुट को स्पष्ट रूप से परिभाषित करना होगा। – millimoose