कर्सर के साथ लिगेसी कोड को पुनः सक्रिय करना (परीक्षण पहले, साहस दूसरा)
बिना किसी परीक्षण वाला 600-लाइन मॉड्यूल कर्सर से मिला। वर्कफ़्लो जिसने उत्पादन को तोड़े बिना इसे दोबारा तैयार किया वह एआई के बारे में कम और अनुक्रमण के बारे में अधिक था।
मॉड्यूल 600 लाइनों का था, दस साल पुराना, भार वहन करने वाला, और केवल उत्पादन ट्रैफ़िक द्वारा परीक्षण किया गया था। कर्सर ने इसे अच्छी तरह से दोहराया, लेकिन एआई शायद कहानी का एक तिहाई हिस्सा था। अन्य दो तिहाई अनुक्रमण थे: परीक्षण, सीमाएँ, और एजेंट को तेजी से आगे बढ़ने से मना करना।
चरण एक लक्षण वर्णन परीक्षण है, और कर्सर वास्तव में उन्हें लिखने में मदद करने में अच्छा है। मैंने इसे मॉड्यूल को पढ़ने और प्रत्येक अवलोकन योग्य व्यवहार को सूचीबद्ध करने के लिए कहा: इनपुट, आउटपुट, एज केस, त्रुटि पथ। फिर अजीब चीजों सहित वर्तमान व्यवहार का दावा करने वाले परीक्षण उत्पन्न करने के लिए, स्पष्ट रूप से 'लक्षणीकरण: वर्तमान व्यवहार का दावा करता है, शुद्धता का नहीं।' वे परीक्षण सुरक्षा जाल हैं जो हर चीज़ को संभव बनाते हैं।
चरण दो सर्जरी से पहले की सीमाएं हैं। मैंने कर्सर को बिना किसी व्यवहार को बदले पहले सीम पर शुद्ध फ़ंक्शन निकालने (पार्सिंग, गणना, फ़ॉर्मेटिंग) दिया था, प्रत्येक निष्कर्षण को हरे रंग में सत्यापित किया गया था। तभी वास्तविक रिफैक्टरिंग शुरू हुई, कार्य दर कार्य, इस निर्देश के साथ जो सबसे महत्वपूर्ण है: 'प्रति पास एक चीज़ बदलें, परीक्षण चलाएं, रुकें।' एजेंट जो रिफ्लेक्टर साहसपूर्वक आत्मविश्वास से फिर से लिखते हैं और सूक्ष्मता से तोड़ते हैं। उनके बीच सत्यापन के साथ छोटे पास से आप नियंत्रण बनाए रखते हैं।
वह कदम जिसकी किसी को उम्मीद नहीं थी कि वह मायने रखेगा: मैंने कर्सर को लागू करने से पहले प्रत्येक परिवर्तन को एक वाक्य में समझाने को कहा। स्पष्टीकरण में दो चीजें पकड़ी गईं जो परीक्षणों में नहीं थीं: एक साझा वस्तु का उत्परिवर्तन जो केवल समवर्ती रूप से बिट था, और संचालन का पुन: क्रम जो परीक्षणों के समय क्षेत्र में सुरक्षित था और उत्पादन में नहीं। एक-वाक्य के तर्क को पढ़ने में प्रति बदलाव दस सेकंड का समय लगता है और जाल से जो छूट गया उसे पकड़ लिया जाता है।
अंतिम मिलान: मॉड्यूल अब 300 पंक्तियों का है, जिसकी संरचना एक नया कर्मचारी पढ़ सकता है, चरित्र-चित्रण सुइट द्वारा सत्यापित व्यवहार समान है, और शून्य उत्पादन घटनाएं हैं। एआई ने टाइपिंग की. अनुशासन ने रिफैक्टरिंग की। दोनों आवश्यक थे; उनमें से केवल एक ही वैकल्पिक था।
