एक पंक्ति पर चर घोषित करने का बुरा अभ्यास क्यों है?आप एक ही प्रकार के एक ही प्रकार के कई चर घोषित क्यों नहीं करते हैं?
उदा।
private String var1, var2, var3
बजाय
:
private String var1;
private String var2;
private String var3;
एक पंक्ति पर चर घोषित करने का बुरा अभ्यास क्यों है?आप एक ही प्रकार के एक ही प्रकार के कई चर घोषित क्यों नहीं करते हैं?
उदा।
private String var1, var2, var3
बजाय
:
private String var1;
private String var2;
private String var3;
मुझे लगता है कि विभिन्न कारणों से कर रहे हैं कि जोड़ने के लिए बनाता है, लेकिन वे सभी कि पहले सिर्फ कम पठनीय और अधिक विफलता की संभावना है करने के लिए नीचे उबाल क्योंकि एक पंक्ति एक से अधिक चीजें कर रही है।
और यह सब कुछ वास्तविक लाभ के लिए नहीं है, और क्या आप मुझे नहीं बताते हैं कि आपको सहेजी गई जगह की दो पंक्तियां वास्तविक लाभ है।
यह क्या होता है जब आप
if ((foo = some_function()) == 0) {
//do something
}
बेशक
इस उदाहरण तुम्हारा की तुलना में काफी बदतर है के लिए एक ऐसी ही बात है।
क्योंकि में कुछ भाषाओं, var2 और अपने उदाहरण में var3 तार नहीं होता था, ये वेरिएंट (untyped) होगा।
मेरी राय में, प्रत्येक चर को अलग लाइन पर रखने का मुख्य लक्ष्य संस्करण नियंत्रण उपकरण के काम को सुविधाजनक बनाना होगा।
यदि एक ही पंक्ति पर कई चर हैं तो आप विभिन्न डेवलपर्स द्वारा असंबंधित संशोधनों के लिए संघर्ष करने का जोखिम उठाते हैं।
edg के साथ सहमत हैं, और यह भी क्योंकि यह अलग-अलग रेखा पर प्रत्येक चर रखने के लिए रखरखाव के लिए अधिक पठनीय और आसान है। आप तुरंत प्रकार, दायरा और अन्य संशोधक देखते हैं और जब आप एक संशोधक बदलते हैं तो यह केवल आपके इच्छित वैरिएबल पर लागू होता है - जो त्रुटियों से बचाता है।
अलग-अलग लाइनों के साथ, आपको चर के उपयोग (यदि यह इसके नाम से स्पष्ट नहीं है) का वर्णन करने वाली प्रत्येक पंक्ति पर एक टिप्पणी जोड़ने का अवसर है।
यहाँ मेरी कारणों है:
C++ को मर्ज करने के लिए:
int * i, j;
मैं प्रकार int * है, जे प्रकार int है। भेद बहुत आसानी से चूक गया है।
एक पंक्ति में उन्हें होने के अलावा प्रत्येक यह आसान कुछ टिप्पणियों बाद में
ईमानदार होने के लिए मैं इसके खिलाफ नहीं हूं। मुझे लगता है कि एक ही पंक्ति पर समान चर के समूह के लिए यह पूरी तरह व्यवहार्य है उदा।
फ्लोट एफएमआईएन, एफएमएक्स;
हालांकि जब वे चर असंबंधित होते हैं तो मैं साफ़ करता हूं उदा।
int iBalance, iColor; जब संस्करण नियंत्रण उपकरण (मिशेल द्वारा कवर) का उपयोग कर आप सबसे सरल अतिप्रवाह/अधःप्रवाह जब
सी/C++ में है, तो आप भी समस्या यह है कि राशि * एक सूचक प्रकार इंगित करने के लिए प्रयोग किया जाता है केवल सीधे निम्नलिखित आईडी पर लागू होता है entifier। तो अनुभवहीन डेवलपर्स की एक नहीं बल्कि आम गलती
int* var1, var2, var3;
लिखने के लिए और सभी तीन चर उम्मीद प्रकार 'पूर्णांक सूचक' का हो सकता है, जबकि संकलक के लिए इस बनाने केवल एक var1 रूप
int* var1;
int var2;
int var3;
पढ़ता है सूचक।
क्या इस तरह के रूप मामले के बारे में:
public static final int NORTH = 0,
EAST = 1,
SOUTH = 2,
WEST = 3;
कि माना बुरा व्यवहार के साथ-साथ है? मुझे लगता है कि ठीक है के रूप में यह अंक पहले किए गए के कुछ काउंटरों पर विचार करेंगे:
तो किया जा सकता है (यद्यपि बदबूदार कोड) उदाहरण के लिए, वहाँ कारणों से आप wouldn है ' क्या ऐसा नहीं करते?
इसके साथ एक समस्या: यदि आप अधिक चर जोड़ते हैं और अर्धविराम को अल्पविराम में बदलना भूल जाते हैं। ;) – endolith
यह खराब अभ्यास है जब आप कर सकते हैं और मंदी पर चर शुरू करना चाहते हैं। एक उदाहरण जहां यह इतना बुरा नहीं हो सकता है:
string a,b;
if (Foo())
{
a = "Something";
b = "Something else";
}
else
{
a = "Some other thing";
b = "Out of examples";
}
यह बुरा अभ्यास क्यों है? मुझे नहीं लगता कि यह तब तक है जब तक आपका कोड अभी भी पठनीय नहीं है।
//not much use
int i, j, k;
//better
int counter,
childCounter,
percentComplete;
आपकी "बेहतर" शैली वह है जो मैं आम तौर पर उन भाषाओं में उपयोग करता हूं जिनके लिए परिवर्तनीय घोषणा की आवश्यकता होती है। पठनीयता को बनाए रखने के दौरान यह थोड़ा और DRY है। –
आम तौर पर यह संस्करण नियंत्रण और अन्य लोगों द्वारा चर्चा की टिप्पणी कारणों के लिए है, और मैं लागू होता है कि सभी मामलों के 95% में। हालांकि ऐसी परिस्थितियां हैं जहां यह समझ में आता है, उदाहरण के लिए यदि मैं ग्राफिक्स कोडिंग कर रहा हूं और मैं बनावट निर्देशांक (हमेशा एस और टी के रूप में सम्मेलन द्वारा संदर्भित) का प्रतिनिधित्व करने के लिए कुछ चर चाहता हूं, तो उन्हें
int के रूप में घोषित करना , टी; // बनावट निर्देशांक
आईएमएचओ कोड को छोटा करके कोड को पठनीयता को बढ़ाता है और यह स्पष्ट कर देता है कि ये दो चर एक साथ हैं (निश्चित रूप से कुछ इस मामले में एकल बिंदु वर्ग चर का उपयोग करने के लिए बहस करेंगे)।
प्रासंगिकता।
सिर्फ इसलिए कि दो चर प्रकार हैं स्ट्रिंग का मतलब यह नहीं है कि वे एक-दूसरे से निकटता से संबंधित हैं।
यदि दो (या अधिक) चर फ़ंक्शन द्वारा बारीकी से संबंधित हैं, बल्कि परिवर्तनीय प्रकार, तो शायद उन्हें एक साथ घोषित किया जा सकता है। यानी अगर केवल दो चरों को देखने के लिए आपके प्रोग्राम के पाठक के लिए यह समझ में आता है तो उन्हें वास्तव में एक साथ रखा जाना चाहिए
हालांकि इस मामले में चर का नाम बदलने के लिए बेहतर नहीं होगा? –