मैं वर्तमान में किसी भी यूनिट परीक्षण के साथ एक बड़े कोडबेस के एक हिस्से को फिर से बना रहा हूं। मैंने ब्रूट तरीके से कोड को रीफ़ैक्टर करने की कोशिश की, यानी कोड क्या कर रहा है और क्या बदलाव होता है, इसका अनुमान लगाने की कोशिश करने से इसका अर्थ नहीं होगा, लेकिन सफलता के बिना: यह कोडबस के चारों ओर बेतरतीब ढंग से सुविधाओं को तोड़ता है।
ध्यान दें कि रीफैक्टरिंग में लिगेसी सी # कोड को एक अधिक कार्यात्मक शैली में शामिल करना शामिल है (विरासत कोड .NET फ्रेमवर्क 3 की सुविधाओं में से किसी का उपयोग नहीं करता है और बाद में LINQ सहित), जेनेरिक को जोड़ते हुए जहां कोड उनसे लाभ उठा सकता है, आदि।
मैं औपचारिक तरीकों का उपयोग नहीं कर सकता , यह देखते हुए कि उनकी लागत कितनी होगी।
दूसरी ओर, मैं मानता हूं कि कम से कम "कोई भी रिफैक्टेड विरासत कोड यूनिट परीक्षणों के साथ आएगा" नियम का कड़ाई से पालन किया जाना चाहिए, चाहे कितना भी खर्च हो। समस्या यह है कि जब मैं 500 एलओसी निजी पद्धति का एक छोटा हिस्सा रिफ्लेक्टर करता हूं, तो यूनिट परीक्षण जोड़ना एक कठिन काम प्रतीत होता है।
किसी दिए गए कोड के लिए कौन से यूनिट परीक्षण प्रासंगिक हैं, यह जानने में मेरी क्या मदद कर सकते हैं? मैं यह अनुमान लगा रहा हूं कि कोड का स्थैतिक विश्लेषण किसी तरह मददगार होगा, लेकिन वे कौन से उपकरण और तकनीक हैं जिनका मैं उपयोग कर सकता हूं:
मुझे पता है कि मुझे कौन सी इकाई परीक्षण बनाने चाहिए,
और / या पता है कि क्या मैंने जो परिवर्तन किया है वह मूल कोड को इस तरह से प्रभावित करता है कि वह अब से अलग तरीके से निष्पादित हो रहा है?
formal methods in software development
वैसे भी उपयोग नहीं करना चाहेंगे क्योंकि यह एक प्रोग्राम की शुद्धता को सही तर्क का उपयोग करने के लिए साबित करने के लिए उपयोग किया जाता है और एक बड़े कोडबेस को पुनःप्राप्त करने के लिए प्रयोज्यता नहीं होगी। आमतौर पर चिकित्सा अनुप्रयोगों जैसे क्षेत्रों में कोड कार्यों को सही ढंग से साबित करने के लिए उपयोग किए जाने वाले औपचारिक तरीके। आप सही हैं यह करना महंगा है यही कारण है कि इसका उपयोग अक्सर नहीं किया जाता है।