काउबॉय कोडिंग के वर्षों के बाद, मैंने अच्छी गुणवत्ता कोड लिखने के तरीके पर एक किताब लेने का फैसला किया। मैं रॉबर्ट सेसिल मार्टिन द्वारा क्लीन कोड पढ़ रहा हूं। अध्याय 3 (फ़ंक्शन) में डायडिक कार्यों पर एक अनुभाग है। यहाँ पुस्तक से एक अंश है।
यहां तक कि स्पष्ट dyadic कार्यों की तरह
assertEquals(expected, actual)समस्याग्रस्त हैं। कितनी बार आपने वास्तविक को रखा है जहाँ अपेक्षित होना चाहिए? दोनों तर्कों में कोई स्वाभाविक आदेश नहीं है। अपेक्षित, वास्तविक आदेश एक सम्मेलन है जिसे सीखने के लिए अभ्यास की आवश्यकता होती है।
लेखक एक सम्मोहक बिंदु बनाता है। मैं मशीन लर्निंग में काम करता हूं और हर समय इस पर आता हूं। उदाहरण के लिए, स्केलेर लाइब्रेरी में सभी मीट्रिक फ़ंक्शंस (संभवतः क्षेत्र में सबसे अधिक इस्तेमाल किया जाने वाला पायथन लाइब्रेरी) आपको इनपुट के क्रम से सावधान रहने की आवश्यकता है। एक उदाहरण के रूप में sklearn.metrics.homogeneity_score इनपुट labels_trueऔर के रूप में लेता है labels_pred। यह फ़ंक्शन बहुत प्रासंगिक नहीं है, जो प्रासंगिक है वह यह है कि यदि आप इनपुट के क्रम को बदलते हैं तो कोई त्रुटि नहीं होगी। वास्तव में आदानों को बदलना पुस्तकालय में एक अन्य फ़ंक्शन का उपयोग करने के बराबर है ।
हालांकि इस तरह के कार्यों के लिए एक समझदार तय कहने के लिए पुस्तक पर नहीं जाती है assertEquals। मैं उन assertEqualsकार्यों के लिए या उनके बारे में ठीक नहीं सोच सकता, जो अक्सर ऊपर वर्णित एक के समान हैं। इस मुद्दे को हल करने के लिए अच्छे अभ्यास क्या हैं?