मैं इसे पढ़ने में आसान बनाने के लिए कुछ कोड रीफैक्टर कर रहा था और मैं उस चीज़ में भाग गया जो मुझे अजीब लगता है और मैं सोच रहा था कि कोई मुझे यह समझा सकता है।विभिन्न स्विच मामलों में चर के समान नाम नहीं हो सकता है?
मूल कोड:
if(tokensLeft == 3) {
String id = tokens.nextToken();
String value = tokens.nextToken();
String trailerId = tokens.nextToken();
rawListener.binaryInfo(id, Integer.parseInt(value), trailerId, this);
} else if(tokensLeft == 2) {
String id = tokens.nextToken();
String value = tokens.nextToken();
rawListener.binaryInfo(id, Integer.parseInt(value), this);
} else {
System.out.println("Method call binaryInfo could not be done because: \"Wrong number of parameters\"");
}
पुनर्रचना के बाद:
switch(tokensLeft) {
case 3:
String id = tokens.nextToken();
String value = tokens.nextToken();
String trailerId = tokens.nextToken();
rawListener.binaryInfo(id, Integer.parseInt(value), trailerId, this);
break;
case 2:
String id = tokens.nextToken(); // Syntax error
String value = tokens.nextToken(); // Syntax error
rawListener.binaryInfo(id, Integer.parseInt(value), this);
break;
default:
System.out.println("Method call binaryInfo could not be done because: \"Wrong number of parameters\"");
break;
}
पहली नज़र में यह पूरी तरह से उचित है, लेकिन यह मेरे एक सिंटैक्स त्रुटि देता है।
लिंक एक स्थानीय नाम परिवर्तन के लिए सभी संदर्भों (अन्य फ़ाइलों में संदर्भ परिवर्तन नहीं करता है)
ऐसा लगता है कि एक स्विच बयान में किसी कारण से, मैं फिर से String id
और String value
का उपयोग करने में असमर्थ हूँ एक अलग मामले में।
यह मेरे चर के बजाय अजीब नामकरण करता है।
अब आप कह सकते हैं: "बस अपने स्विच स्टेटमेंट के ऊपर अपने चर घोषित करें।" लेकिन इसका मतलब यह होगा कि मैं हमेशा मेरे चर बनाते हैं, भले ही tokensLeft
न तो 3 या 2 है और मुझे अपने चर की आवश्यकता नहीं होगी। यह अनावश्यक स्मृति का उपयोग करने जैसा लगता है।
क्या कोई मुझे बता सकता है कि स्विच केस ऐसा क्यों करता है और मैं अपनी समस्या का समाधान कैसे कर सकता हूं?
उपयोग के तरीकों - यह अच्छा अभ्यास वैसे भी और अपने दायरे आप के लिए हल हो जाएगा। यदि आप वास्तव में स्पेगेटी कोड लिखना चाहते हैं तो स्पष्ट ब्लॉक ('{}') का उपयोग करें। –