संपादित करें: चेतावनी - आगे आत्म सिखाया पुरुष से उत्तर है। । ।
मेरी विनम्र राय में (मैं पूरी तरह से यहां भी सीख रहा हूं) ऐसा लगता है कि बोनीटी और डैनियल टी सही रास्ते पर हैं। यहां जो टुकड़ा गुम हो सकता है वह डिज़ाइन हिस्सा है। हालांकि यह कहना सुरक्षित है कि रिफैक्टरिंग/कंपोज़िंग हमेशा एक आवश्यकता होगी, यह भी कहना सुरक्षित होगा कि (शुरुआती लोगों के साथ विशेष रूप से!) उचित डिजाइन सामने वाला पहला, दूसरा और तीसरा कदम सही ढंग से तैयार कोड होगा?
जबकि मैं जो पूछ रहा हूं वह प्राप्त करता हूं (कोड संरचना के लिए परीक्षण का परीक्षण/सेट), मुझे लगता है कि बोनीटी डिजाइन प्रक्रिया के "छद्म कोड" भाग के दौरान उन परीक्षणों में से जल्द से जल्द आवेदन कर रहा है, नहीं?
जाहिर है, परियोजना नियोजन के शुरुआती चरणों में, मजबूत डिजाइन और अनुभवी कोडर स्पष्ट स्थानों को संरचना के लिए परिपक्व कर देंगे। जैसे-जैसे काम बढ़ता है, और टीम शरीर के साथ इन शुरुआती कोड स्टब्स को भरने शुरू कर रही है, कुछ और अधिक एक्सप्यूज एक्सपल्स फसल करने के लिए बाध्य हैं। बोनीटी का उदाहरण इन पहले दो चरणों को अच्छी तरह प्रस्तुत करता है।
मुझे लगता है कि कोड बिंदु गंध के लिए अनुभव और बारीक-ट्यूनेड "नाक" में एक बिंदु आता है - दूसरे शब्दों में, वह हिस्सा जो आप सीधे सिखाने में सक्षम नहीं हो सकते हैं। हालांकि, वह जगह है जहां डैनियल टी का जवाब आता है - जबकि कोई उचित संरचना के लिए ठोस एसीआईडी-प्रकार "परीक्षण" विकसित करने में सक्षम नहीं हो सकता है, तो कोई भी डैनियल जैसी तकनीकों को संभावित सुगंधित कोड ढूंढने का प्रस्ताव रख सकता है। यदि आप करेंगे, तो "संकेत" का पता लगाएं, जो कम से कम आगे की जांच करनी चाहिए।
यदि कोई निश्चित नहीं है कि चीजें उचित स्तर पर रचित हैं या नहीं, तो यह किसी विशेष कार्य के माध्यम से काम करने का प्रयास कर सकता है और वर्णन करने का प्रयास कर सकता है, चरण-दर-चरण, सरल, एकल वाक्यों में बिना किसी वाक्य के । यह शायद सबसे बुनियादी एसीआईडी-प्रकार परीक्षण है जिसे किया जा सकता है। उल्लेख नहीं है, यह प्रक्रिया डिफ़ॉल्ट रूप से कोड को सही तरीके से दस्तावेज करने के अंत में समाप्त होगी। । ।
बोनीटी के जवाब में आप इंगित करते हैं कि उसका छद्म कोड/विधि स्टब्स अगले चरण को स्पष्ट करता है - मैं शर्त लगा रहा हूं कि यदि कोई फ़ंक्शन के माध्यम से चलता है और चरण-दर-चरण चीजों का वर्णन करता है, तो अक्सर उसे पता चल जाएगा कि वास्तव में अगला कदम जाहिर है, विस्तार के समान स्तर पर, या कहीं और संबंधित है। हालांकि स्पष्ट रूप से मामले (कई, जटिल कोड के साथ) होंगे जहां चीजें इतनी साफ नहीं हैं, मैं प्रस्ताव करता हूं कि यह वह जगह है जहां अनुभव (और संभवतः जेनेटिक्स!) कुछ भी नहीं आते हैं, जो चीजें आप सीधे सिखा नहीं सकते हैं। उस बिंदु पर, किसी को समस्या डोमेन की जांच करनी चाहिए, और एक समाधान निर्धारित करना चाहिए जो डोमेन के लिए सबसे अच्छा फिट बैठता है (और इसे सड़क के नीचे बदलने के लिए भी तैयार रहें ...)। एक बार फिर, छोटे, सरल कथन (और ग्रे क्षेत्रों में फैसलों का वर्णन करने वाले कथा) के साथ "बीच में" मामलों को सही तरीके से दस्तावेज करने से गरीब रखरखाव लड़के को सड़क पर मदद मिलेगी।
मुझे एहसास हुआ कि मैंने यहां कुछ भी नया प्रस्ताव नहीं दिया है, लेकिन मुझे जो कहना है वह एक टिप्पणी से अधिक लंबा था!
@ बोनीटी - शुरुआती बिंदु थोड़ा "आशावादी" है। शुरुआत बिंदु को इनलाइन कोड के मिश्रण के रूप में कल्पना करें और अन्य कार्यों/निर्भरताओं पर कॉल करें .. विधियों को अभी तक निकाला नहीं गया है या आपके पास अच्छे नाम नहीं हैं (जैसे आपके पास अगला चरण स्पष्ट है)। उदाहरण के लिए +1 हालांकि मैं Relax() को एक कोर नहीं कहूंगा :) – Gishu
आपने कहा था कि आप लोगों को प्रशिक्षित करना चाहते हैं? इस मामले में "स्वच्छ" उदाहरण से शुरू करना सबसे अच्छा है और उसके बाद प्रगति करें कि आप इसे मौजूदा मैसी कोड पर कैसे लागू करेंगे। – BonyT
सामान्य रूप से मैं शीर्ष स्तर पर शुरू करके वर्णन करता हूं जैसा कि आप शीर्ष स्तर पर शुरू करके वर्णन करते हैं और बिट्स के लिए इसे देखते हैं जो एक ही उद्देश्य से कार्यरत एक अच्छी तरह से नामित फ़ंक्शन में अलग-अलग रह सकते हैं। जहां तक संभव हो इन बाहर निकालें। फिर श्रृंखला को आगे बढ़ाएं - नए बनाए गए तरीकों में - एक ही कोड काटना, इत्यादि करें। जैसे ही आप बिट्स काट लें, पुन: उपयोग की संभावनाओं को देखें और इस कोड को एक अलग वर्ग पुस्तकालय में ले जाएं। – BonyT