विरासत किसी भी कोड आप चाहते हैं इसका मतलब है बल्कि साथ काम से बदल दें। अधिकांश मौजूदा कोड के प्रति अधिकांश प्रोग्रामर्स के रवैये को देखते हुए, इसमें आमतौर पर लगभग सभी चीजें शामिल होती हैं, सिवाय इसके कि आप सक्रिय रूप से इस समय क्या लिख रहे हैं (और एक बड़े प्रोजेक्ट पर जहां आपको एक जमे हुए डिजाइन के लिए कोड करना है, यहां तक कि आप जो भी लिख रहे हैं, वह सबसे तेज है पल को भी शामिल किया जा सकता है)।
- जोर "बल्कि" यह बताने के लिए है कि विरासत कोड का अर्थ यह भी है कि आप इसके साथ काम कर रहे हैं भले ही आप इसके बजाय नहीं। मुझे यकीन नहीं है कि जोर हालांकि पर्याप्त था। उसके कारण अलग-अलग हो सकते हैं। कुछ वास्तव में सिर्फ बहुत बड़े और बदलने के लिए जटिल हैं। अन्य अन्य प्रणालियों के लिए इंटरफेस हैं। अभी भी अन्य लोग राजनीति और व्यक्तित्व से प्रेरित हैं (उदाहरण के लिए, कोड भयानक है, लेकिन बूथ बेब अद्भुत था)।
- एक और बात जो मैंने पर्याप्त रूप से जोर नहीं दी है , वह यह है कि जब कोड गुणवत्ता एक कारक हो सकता है, तो यह शायद ही कभी (यदि कभी भी) एकमात्र कारक है - और अक्सर एक विशेष रूप से महत्वपूर्ण भी नहीं है।
- मुझे लगता है कि एकमात्र परीक्षण कारक के रूप में यूनिट परीक्षण को धक्का देने वाले लोग उस व्यक्ति की तरह हैं जो अपनी पत्नी के कान की बाली के लिए सड़क की रोशनी के नीचे देख रहा है, एक ब्लॉक दूर गिरा दिया। प्रकाश बेहतर हो सकता है, लेकिन आप अभी भी गलत जगह देख रहे हैं। कूल-एड पीने से पहले सोचें ।
- (ए कोरोलरी टू 3.) यह मुझे लगता है कि कुछ लोग इस बारे में अधिक बात कर रहे हैं कि वे चीजों की इच्छा कैसे करते हैं, वे वास्तव में कैसे हैं। यदि जॉन कॉनवेज का गेम ऑफ लाइफ एक ऐप्पल IIc प्लस के लिए विरासत नहीं है, तो यह इसलिए है क्योंकि यह पर्याप्त रूप से छोटा और सरल है कि जमीन से इसे फिर से लागू करना आसान है। सबसे सही इकाई परीक्षण जो कभी भी लिखा गया था, वह एकल iota नहीं बदलेगा ।
अंतिम बिंदु दो अन्य बिंदुओं को जन्म देता है जो मुझे लगता है कि अक्सर सच होते हैं।
पहले, कोड को अक्सर विरासत के रूप में बनाए रखा जाता है, तब भी जब यह वास्तव में नहीं होना चाहिए। उच्च स्तर के प्रबंधक आम तौर पर यह मानते हैं कि एक प्रणाली को लागू करने में प्रारंभिक कार्यान्वयन की तुलना में अधिक या अधिक खर्च होगा, जो शायद ही कभी सच होता है।
दूसरा, यूनिट परीक्षण एक दोधारी तलवार है। वे यह सब सोचना बहुत आसान बनाते हैं कि कार्यान्वयन में स्थानीय परिवर्तन वास्तव में क्या मायने रखते हैं। एक बड़ी प्रणाली में महत्वपूर्ण सुधार करने के लिए, आपको अक्सर (आमतौर पर?) समग्र डिजाइन के लिए पर्याप्त बदलना पड़ता है कि यूनिट परीक्षणों में से कई (यदि अधिकांश नहीं) अप्रासंगिक हो जाते हैं। दुर्भाग्य से, यूनिट परीक्षणों की उपस्थिति और उनके द्वारा किए गए रवैये से उन सभी परिवर्तनों को अनदेखा करना आसान हो सकता है जो वास्तव में आवश्यक हैं।
शायद इसका एक उदाहरण मदद करेगा: मान लें कि एक कार्यक्रम में महान इकाई परीक्षण के साथ एक यूआई पुस्तकालय है, और कई कार्यक्रम जो उस पुस्तकालय का उपयोग करते हैं। ऊपरी प्रबंधन में किसी को विश्वास हो जाता है कि "वेब सक्षम" महत्वपूर्ण है (और, केवल तर्क के लिए, चलो मान लेते हैं कि इस मामले में वह वास्तव में उस बारे में सही है)। सावधानीपूर्वक समीक्षा के बाद, मध्य प्रबंधकों को पता चलता है कि उनकी वर्तमान इकाई का परीक्षण पर्याप्त है कि वे सभी मूल इनपुट सत्यापन को बनाए रखते हुए, HTML / CSS / AJAX के माध्यम से दूरस्थ रूप से HTML / CSS / AJAX के माध्यम से प्रदर्शित होने की स्थानीय ऑपरेटिंग सिस्टम की विंडो क्षमता के माध्यम से प्रदर्शित उपयोगकर्ता इंटरफ़ेस से बदल सकते हैं।
यह बहुत अच्छा है ना? यह दिखाता है कि इकाई परीक्षण कितना उपयोगी हो सकता है। हमने पूरे यूआई के संपूर्ण कार्यान्वयन की अदला-बदली की है, लेकिन यह सुनिश्चित किया है कि लुक, फील और कार्यक्षमता लगभग संगत रहे, और डेटा अखंडता सुनिश्चित करने के लिए सभी उपयोगकर्ता इनपुट को मान्य किया गया है। यूनिट परीक्षण ने दिन बचा लिया है!
या नहीं! उस महान, अत्यधिक लचीली, सावधानीपूर्वक इकाई परीक्षण की गई यूआई लाइब्रेरी ने इस तथ्य से जुड़े सभी लोगों को अंधा करने में मदद की है कि अपने उपयोगकर्ताओं के साथ बाजार में इस कार्यक्रम के लिए, वेब-आधारित यूआई पूरी तरह से गलत है। वास्तव में जिस चीज की आवश्यकता होती है वह है एक RESTful इंटरफ़ेस के साथ एक वेब सेवा , और स्वयं का कोई UI नहीं ।
अब, यह निश्चित रूप से सच है कि इकाई परीक्षण अपने बाजार को समझने या वास्तव में जरूरत महसूस करने की लोगों की क्षमता को दूर नहीं करता है। इसी समय, हथौड़ों और नाखूनों के बारे में पुरानी रेखा वस्तुतः मन में आती है। यह और भी बदतर है जब आप केवल नहीं किया जा सकता है एक हथौड़ा, लेकिन एक है बहुत कुछ इस हथौड़े से अनुभव के, और यह एक सच में एक उच्च गुणवत्ता हथौड़ा कि कई अलग अलग स्थितियों में अविश्वसनीय रूप से अच्छी तरह से काम करता है पता है। यह बहुत सारी स्थितियों में बहुत सारी चीजों पर इतना अच्छा है कि जब यह पूरी तरह से गलत काम है, तो इसे पहचानना और भी मुश्किल हो जाता है।