मुझे लगता है कि यह रूबी में आवेषण का उपयोग करने के लिए पूरी तरह से मान्य है। लेकिन अगर आप दो अलग बातें उल्लेख कर रहे हैं:
- XUnit चौखटे अपने परीक्षण उम्मीदों की जाँच के लिए
assert
तरीकों का उपयोग। उनका उपयोग आपके परीक्षण कोड में नहीं किया जाना चाहिए, न कि आपके आवेदन कोड में।
- सी, जावा या पायथन जैसे कुछ भाषाओं में
assert
निर्माण शामिल है जिसका उद्देश्य आपके कार्यक्रमों के कोड के अंदर उपयोग किया जाना है, ताकि आप अपनी ईमानदारी के बारे में धारणाओं को देख सकें। ये चेक कोड के अंदर ही बनाए जाते हैं। वे टेस्ट-टाइम उपयोगिता नहीं हैं, बल्कि विकास-समय एक हैं।
मैं हाल ही में solid_assert: a little Ruby library implementing a Ruby assertion utility और भी a post in my blog explaining its motivation लिखा .. यह आप के रूप में भाव लिखने करते हैं:
assert some_string != "some value"
assert clients.empty?, "Isn't the clients list empty?"
invariant "Lists with different sizes?" do
one_variable = calculate_some_value
other_variable = calculate_some_other_value
one_variable > other_variable
end
और वे assert
और invariant
खाली बयान के रूप में मूल्यांकन हो तो निष्क्रिय किया जा सकता। यह आपको उत्पादन में किसी भी प्रदर्शन की समस्या से बचने देता है। लेकिन ध्यान दें कि The Pragmatic Programmers उन्हें निष्क्रिय करने के खिलाफ अनुशंसा करते हैं। यदि आप वास्तव में प्रदर्शन को प्रभावित करते हैं तो आपको केवल उन्हें निष्क्रिय करना चाहिए।
उत्तर के संबंध में यह कहकर कि मूर्खतापूर्ण रूबी तरीका सामान्य raise
कथन का उपयोग कर रहा है, मुझे लगता है कि इसमें व्यक्तित्व की कमी है। जोरदार प्रोग्रामिंग के सुनहरे नियमों में से एक सामान्य अपवाद हैंडलिंग के लिए दावा का उपयोग नहीं कर रहा है। वे दो पूरी तरह से अलग चीजें हैं। यदि आप उनमें से दो के लिए एक ही वाक्यविन्यास का उपयोग करते हैं, तो मुझे लगता है कि आप कोड अधिक अस्पष्ट होंगे। और निश्चित रूप से आप उन्हें निष्क्रिय करने की क्षमता खो देते हैं।
आप इस बात से आश्वस्त हो सकते हैं कि दावाों का उपयोग करना एक अच्छी बात है क्योंकि The Pragmatic Programmer From Journeyman to Master और Code Complete जैसे दो क्लासिक पुस्तकें पढ़नी चाहिए और उनके उपयोग की अनुशंसा करें। Programming with assertions शीर्षक वाला एक अच्छा लेख भी है जो बहुत अच्छी तरह से चित्रित करता है कि इसके बारे में ज़ोरदार प्रोग्रामिंग और इसका उपयोग कब किया जाता है (यह जावा में आधारित है, लेकिन अवधारणा किसी भी भाषा पर लागू होती है)।
मुझे ऐसी समस्याएं पसंद हैं जो दोनों करते हैं: आपको सिखाएं, और कुछ करें। :) –