कुछ समय पहले, मैंने C ++ में लिखी गई किसी चीज़ के बारे में SO पर एक प्रश्न पूछा था, लेकिन समस्या का उत्तर हाथ में मिलने के बजाय, मेरी कोडिंग शैली पर सभी पागल हो गए, तब भी जब मैंने संकेत दिया कि यह कोड का एक WIP टुकड़ा था। और जब मैं आधार मामले में चल रहा था, तो मुझे बाद में इसे साफ करना था। (मुझे इतने नीचे वोट मिले कि मैंने सवाल खींचने का फैसला किया, क्योंकि एसओ पर मेरा प्रतिनिधि पहले से ही निकट है।)
इसने मुझे आश्चर्यचकित कर दिया कि लोग इस तरह की हार्ड लाइन को क्यों अपनाते हैं "तुम एक नोब हो जाओ, अपने आप को बकवास करो" रवैया। मुझ पर C ++ लिखने का आरोप लगाया जा रहा था मानो यह जावा हो। कुछ ऐसा जो मुझे समझ नहीं आ रहा है, और वह अभी भी मुझे चकित करता है।
मैं कई वर्षों के लिए कुछ ओओपी भाषाओं में प्रोग्रामिंग कर रहा हूं, हालांकि अंतराल में। मैं अपने उपलब्ध पुस्तकालयों और हाथ में नौकरी के लिए इष्टतम निष्पादन वातावरण के संदर्भ में उपयोग करने के लिए भाषा का चयन करता हूं। मैं OOP कोड में डिज़ाइन पैटर्न अपनाता हूं और मुझे पूरा विश्वास है कि मेरे पैटर्न का उपयोग ध्वनि है और यह OO बुद्धिमान है, मैं अपना खुद का पकड़ सकता हूं। मैं OOP टूलबॉक्स को समझता हूं, लेकिन टूल का उपयोग केवल तभी करें जब मुझे लगता है कि यह वास्तव में आवश्यक है, न कि केवल मेरी कोडिंग बुद्धि दिखाने के लिए एक साफ चाल का उपयोग करें। (जो मुझे पता है कि शीर्ष पायदान नहीं हैं, लेकिन मुझे लगता है कि n00b स्तर पर भी नहीं हैं)।
एक पंक्ति लिखने से पहले मैं अपना कोड डिज़ाइन करता हूं। परीक्षणों को परिभाषित करने के लिए, मैं एक निश्चित वर्ग के लक्ष्यों और उन परीक्षण मानदंडों को सूचीबद्ध करता हूं जिनका पालन करना है। क्योंकि सीक्वेंस डायग्राम बनाना मेरे लिए आसान है और फिर कोड लिखना, मैंने इंटरफ़ेस स्पष्ट होने के बाद अपने परीक्षण लिखने के लिए चुना।
मुझे यह स्वीकार करना चाहिए कि मैंने प्रश्न में जो कोड पोस्ट किया था, मैं स्मार्ट पॉइंटर्स का उपयोग करने के बजाय पॉइंटर्स का उपयोग कर रहा था। जब भी मैं कर सकता हूं मैं RAII का उपयोग करता हूं। मुझे पता है कि उचित RAII का मतलब है, नल-टकराने वालों से बचाव, लेकिन मैं काम करता हूं। यह एक कार्य प्रगति पर था और मेरा मतलब बाद में इसे साफ करना था। काम करने के इस तरीके की कड़ी निंदा की गई।
मेरे विचार में, मेरे पास पहले एक काम करने वाला उदाहरण होना चाहिए ताकि मैं देख सकूं कि क्या आधार मामला विचार का एक व्यवहार्य तरीका है। मुझे यह भी लगता है कि कोड को साफ करना कुछ ऐसा है जो आधार मामले के सिद्ध होने के बाद चंचलता को प्रतिबिंबित करने के चरण के लिए विशिष्ट है। मुझे यह स्वीकार करना चाहिए कि यद्यपि मैं धीरे-धीरे Cxx मानक प्राप्त कर रहा हूं, मैं उन अवधारणाओं का उपयोग करने का जोखिम उठाने के बजाय जो मैं समझता हूं, का उपयोग करना पसंद करता हूं, जो कि मुझे अभी तक उत्पादन कोड में मास्टर करना है। मैं एक बार में एक बार नए सामान की कोशिश करता हूं, लेकिन आमतौर पर खेल परियोजनाओं में जो मेरे पास हैं, बस उस उद्देश्य के लिए।
[संपादित करें] मैं स्पष्ट करना चाहूंगा कि gnat का सुझाव [१] उस खोज में नहीं दिखा, जो मैंने अपना प्रश्न पूछने से पहले किया था। हालाँकि, उनका सुझाव प्रश्न के एक पहलू को कवर करता है, लेकिन वह जिस प्रश्न से जुड़ा है, वह मेरे प्रश्न का उत्तर नहीं देता है, बस इसका हिस्सा है। मेरा प्रश्न मेरी कोडिंग शैली और विभिन्न कोडिंग शैलियों और कौशल के (स्पष्ट) स्तरों को संभालने के पेशेवर पहलुओं को मिली प्रतिक्रिया के बारे में अधिक है। SO पर मेरे पिछले प्रश्न के साथ और यह एक बिंदु के रूप में प्रतिक्रिया है। [/ संपादित करें]
फिर सवाल यह है: किसी ऐसे व्यक्ति का उपहास क्यों करें जो आपकी कोडिंग शैली का उपयोग नहीं करता है?
मेरे लिए मामले / उपखंड निम्नलिखित हैं:
- प्रोटोटाइप स्थितियों में अधिक त्रुटि प्रवण कोड का उपयोग करने के लिए यह एक बुरा प्रोग्रामिंग अभ्यास क्यों होगा, यदि रीफैक्टरिंग इसके बाद अधिक मजबूत बनाता है?
- C ++ में लिखा गया प्रोग्राम कैसा होगा जैसा कि जावा में लिखा गया था? यह एक बुरा कार्यक्रम क्या है, (यह देखते हुए कि मैंने वर्तमान शैली के इरादे और सुधार के लिए नियोजित कार्य का संकेत दिया है?)
- यदि मैं एक निश्चित प्रोग्रामिंग प्रतिमान (जैसे OOP / DP) में उपयोग किए जाने वाले निर्माण का उपयोग करने के लिए चुना तो मैं एक बुरा पेशेवर कैसे होगा?
int
चर के साथ वास्तविक लंबाई का ट्रैक रखने के लिए।