मैंने इन स्निपेट्स का बहुत उपयोग किया है, जिसकी तलाश है null
मूल्यों और खाली तारों की ।
मैं "तर्क परीक्षण" का उपयोग करता हूं-प्राप्त तर्कों को जांचने के लिए मेरे तरीकों में पहले कोड के रूप में।
testNullArgument
if (${varName} == null) {
throw new NullPointerException(
"Illegal argument. The argument cannot be null: ${varName}");
}
आप अपनी कंपनी या परियोजना के मानक के अनुरूप अपवाद संदेश को बदलना चाह सकते हैं। हालाँकि, मैं कुछ संदेश रखने की सलाह देता हूं जिसमें आपत्तिजनक तर्क का नाम भी शामिल है। अन्यथा आपकी विधि के कॉलर को समझने के लिए कोड में देखना होगा कि क्या गलत हुआ। (एNullPointerException
बिना किसी संदेश के, काफी निरर्थक संदेश "अशक्त" के साथ एक अपवाद पैदा करता है)।
testNullOrEmptyStringArgument
if (${varName} == null) {
throw new NullPointerException(
"Illegal argument. The argument cannot be null: ${varName}");
}
${varName} = ${varName}.trim();
if (${varName}.isEmpty()) {
throw new IllegalArgumentException(
"Illegal argument. The argument cannot be an empty string: ${varName}");
}
आप ऊपर से नल चेकिंग टेम्प्लेट का पुन: उपयोग भी कर सकते हैं और इस स्निपेट को केवल खाली तारों की जांच के लिए लागू कर सकते हैं। फिर आप उपरोक्त कोड का उत्पादन करने के लिए उन दो टेम्पलेट्स का उपयोग करेंगे।
हालाँकि, ऊपर दिए गए टेम्पलेट में यह समस्या है कि यदि तर्क अंतिम है, तो आपको उत्पादित कोड में संशोधन करना होगा ${varName} = ${varName}.trim()
होगा विफल हो जाएगा)।
यदि आप बहुत सारे अंतिम तर्कों का उपयोग करते हैं और खाली तारों की जांच करना चाहते हैं, लेकिन उन्हें अपने कोड के हिस्से के रूप में ट्रिम नहीं करना है, तो आप इसके बजाय जा सकते हैं:
if (${varName} == null) {
throw new NullPointerException(
"Illegal argument. The argument cannot be null: ${varName}");
}
if (${varName}.trim().isEmpty()) {
throw new IllegalArgumentException(
"Illegal argument. The argument cannot be an empty string: ${varName}");
}
testNullFieldState
मैंने चर की जाँच के लिए कुछ स्निपेट भी बनाए जो तर्कों के रूप में नहीं भेजे गए (बड़ा अंतर अपवाद का प्रकार है, अब IllegalStateException
इसके बजाय हो रहा है)।
if (${varName} == null) {
throw new IllegalStateException(
"Illegal state. The variable or class field cannot be null: ${varName}");
}
testNullOrEmptyStringFieldState
if (${varName} == null) {
throw new IllegalStateException(
"Illegal state. The variable or class field cannot be null: ${varName}");
}
${varName} = ${varName}.trim();
if (${varName}.isEmpty()) {
throw new IllegalStateException(
"Illegal state. The variable or class field " +
"cannot be an empty string: ${varName}");
}
testArgument
यह एक चर का परीक्षण करने के लिए एक सामान्य टेम्पलेट है। मुझे वास्तव में इस एक की सराहना करने के लिए कुछ साल लग गए, अब मैं इसे बहुत उपयोग करता हूं (पाठ्यक्रम के उपरोक्त टेम्पलेट्स के साथ संयोजन में)!
if (!(${varName} ${testExpression})) {
throw new IllegalArgumentException(
"Illegal argument. The argument ${varName} (" + ${varName} + ") " +
"did not pass the test: ${varName} ${testExpression}");
}
आप एक चर नाम या एक शर्त दर्ज करते हैं जो एक मान लौटाता है, जिसके बाद एक ऑपरेंड ("==", "<", ">" आदि) और दूसरा मान या चर होता है और यदि परीक्षण विफल हो जाता है तो परिणामी कोड एक IllegalArgumentception को फेंक देगा।
यदि क्लॉज में पूरी अभिव्यक्ति के साथ ", (") लिपटा हुआ है, तो थोड़ा जटिल होने का कारण अपवाद संदेश में परीक्षण की स्थिति का पुन: उपयोग करना संभव है।
शायद यह एक सहकर्मी को भ्रमित करेगा, लेकिन केवल अगर उन्हें कोड को देखना है, जो कि आपको इस तरह के अपवादों को फेंकने की ज़रूरत नहीं है ...
यहाँ ऐरे के साथ एक उदाहरण दिया गया है:
public void copy(String[] from, String[] to) {
if (!(from.length == to.length)) {
throw new IllegalArgumentException(
"Illegal argument. The argument from.length (" +
from.length + ") " +
"did not pass the test: from.length == to.length");
}
}
आप इस परिणाम को टेम्पलेट से कॉल करके, "from.length" [TAB] "== to.length" टाइप करके प्राप्त करते हैं।
परिणाम "ArrayIndexOutOfBoundsException" या इसी तरह से मजेदार है और वास्तव में आपके उपयोगकर्ताओं को समस्या का पता लगाने का मौका दे सकता है।
का आनंद लें!