मैं अपने कोड के साथ नियमित रूप से यूनिट टेस्ट लिखने की आदत में आने का प्रयास कर रहा हूं, लेकिन मैंने पढ़ा है कि पहले टेस्टेबल कोड लिखना महत्वपूर्ण है । यह प्रश्न परीक्षण योग्य कोड लिखने के एसओएलआईडी सिद्धांतों पर छूता है, लेकिन मैं यह जानना चाहता हूं कि क्या उन डिजाइन सिद्धांतों को लाभकारी है (या कम से कम हानिकारक नहीं है) बिल्कुल परीक्षण लिखने की योजना के बिना। स्पष्ट करने के लिए - मैं परीक्षण लिखने के महत्व को समझता हूं; यह उनकी उपयोगिता पर सवाल नहीं है।
मेरे भ्रम को स्पष्ट करने के लिए, इस प्रश्न को प्रेरित करने वाले अंश में , लेखक एक ऐसे फ़ंक्शन का उदाहरण देता है जो वर्तमान समय की जाँच करता है, और समय के आधार पर कुछ मान लौटाता है। लेखक इसे बुरे कोड के रूप में इंगित करता है क्योंकि यह आंतरिक रूप से उपयोग किए जाने वाले डेटा (समय) का उत्पादन करता है, जिससे परीक्षण करना मुश्किल हो जाता है। मेरे लिए, हालांकि, यह तर्क के रूप में समय में पारित करने के लिए ओवरकिल जैसा लगता है। कुछ बिंदु पर मूल्य को शुरू करने की आवश्यकता है, और खपत के सबसे करीब क्यों नहीं? इसके अलावा, मेरे दिमाग में विधि का उद्देश्य वर्तमान समय के आधार पर कुछ मूल्य वापस करना है , इसे एक पैरामीटर बनाकर आप इसका मतलब है कि यह उद्देश्य बदल सकता है / होना चाहिए। यह और अन्य प्रश्न मुझे आश्चर्यचकित करते हैं कि क्या परीक्षण योग्य कोड "बेहतर" कोड का पर्याय था।
क्या परीक्षण योग्य कोड परीक्षण के अभाव में अभी भी अच्छा अभ्यास है ?
क्या परीक्षण योग्य कोड वास्तव में अधिक स्थिर है? डुप्लिकेट के रूप में सुझाया गया है। हालाँकि, यह प्रश्न कोड की "स्थिरता" के बारे में है, लेकिन मैं इस बारे में अधिक विस्तृत रूप से पूछ रहा हूं कि क्या कोड अन्य कारणों से बेहतर है, जैसे कि पठनीयता, प्रदर्शन, युग्मन, और इसके आगे।
func(X)
रिटर्न "Morning"
, तो के सभी आवृत्तियां की जगह func(X)
के साथ "Morning"
कार्यक्रम में परिवर्तन नहीं होगा (यानी बुला। func
अन्य किसी भी चीज से मूल्य वापस नहीं करता है)। बेरोजगारी का तात्पर्य या तो यह है कि func(func(X)) == X
(जो टाइप-सही नहीं है), या जो func(X); func(X);
उसी तरह के साइड-इफ़ेक्ट करता है func(X)
(लेकिन यहाँ कोई साइड-इफ़ेक्ट नहीं हैं)