मैं इस धारणा के तहत था कि अब तक सभी सहमत हैं कि यह अधिकतम गलती थी। लेकिन मैंने हाल ही में इस उत्तर को देखा, जिसमें 137 बार (आज के अनुसार) टिप्पणी "एक उदारवादी" है।
मेरी राय में, जो ब्राउज़र स्वीकार करते हैं, उसमें कमी इस बात का सीधा कारण थी कि HTML और कुछ अन्य वेब मानक कुछ साल पहले थे, और अभी हाल ही में उस गंदगी को ठीक से क्रिस्टलीकृत करना शुरू किया है। जिस तरह से मैं इसे देख, क्या आप स्वीकार में उदार किया जा रहा होगा इस के लिए सीसा।
मैक्सिम का दूसरा भाग "गलती से इनपुट को गलत तरीके से छोड़ना है, जब तक कि यह विनिर्देश द्वारा आवश्यक नहीं है, तब तक त्रुटि संदेश वापस नहीं आता है" और यह सीमावर्ती आक्रामक महसूस करता है। कोई भी प्रोग्रामर जो दीवार पर अपना सिर पीटता है, जब कोई चीज चुपचाप विफल हो जाती है, तो मुझे पता चल जाएगा कि मेरा क्या मतलब है।
तो, क्या मैं इस बारे में पूरी तरह से गलत हूं? क्या मेरे कार्यक्रम में निष्ठावान होना चाहिए और यह त्रुटियों को चुपचाप निगल सकता है? या मैं गलत व्याख्या कर रहा हूं कि इसका क्या मतलब है?
मूल प्रश्न ने कहा "कार्यक्रम", और मैं उस बारे में सभी का ध्यान रखता हूं। यह कार्यक्रमों के लिए समझदार हो सकता है। हालांकि, वास्तव में मेरा मतलब एपीआई है: लोगों के बजाय अन्य कार्यक्रमों के संपर्क में आने वाले इंटरफेस । HTTP एक उदाहरण है। प्रोटोकॉल एक इंटरफ़ेस है जिसका उपयोग केवल अन्य प्रोग्राम करते हैं। लोग कभी भी सीधे तारीखों को प्रदान नहीं करते हैं जो हेडर में जाते हैं जैसे "इफ़-मॉडिफाइड-चूंकि"।
तो, सवाल यह है: क्या मानक को लागू करने वाला सर्वर उदार होना चाहिए और मानक के अनुसार वास्तव में आवश्यक एक के अलावा कई अन्य प्रारूपों में तारीखों की अनुमति देनी चाहिए? मेरा मानना है कि "मानवीय होना चाहिए" इस स्थिति पर लागू होता है, बजाय मानव इंटरफेस के।
यदि सर्वर उदार है, तो यह एक समग्र सुधार की तरह लग सकता है, लेकिन मुझे लगता है कि व्यवहार में यह केवल ग्राहक कार्यान्वयन की ओर जाता है जो कि उधार पर निर्भरता को समाप्त करता है और इस तरह एक अन्य सर्वर के साथ काम करने में विफल रहता है जो थोड़ा अलग तरीके से होता है।
तो, क्या कुछ एपीआई को उजागर करने वाला सर्वर उदार होना चाहिए या यह एक बहुत बुरा विचार है?
अब उपयोगकर्ता इनपुट के उदार हैंडलिंग पर। YouTrack (एक बग ट्रैकिंग सॉफ्टवेयर) पर विचार करें। यह पाठ प्रविष्टि के लिए एक भाषा का उपयोग करता है जो मार्कडाउन की याद दिलाता है। सिवाय इसके कि यह "उदार" है। उदाहरण के लिए, लेखन
- foo
- bar
- baz
है न एक बुलेटेड सूची बनाने का एक दस्तावेज भी तरह से, और फिर भी यह काम किया। नतीजतन, यह समाप्त हो गया हमारे आंतरिक बगट्रैकर में बहुत उपयोग किया जा रहा है। अगला संस्करण सामने आता है, और यह उदार सुविधा थोड़ी अलग तरह से काम करना शुरू कर देती है, इस सूची का एक गुच्छा तोड़कर (गलत) इस (गैर) सुविधा का उपयोग किया जाता है। बुलेटेड सूचियाँ बनाने का प्रलेखित तरीका अभी भी, निश्चित रूप से काम करता है।
तो, क्या मेरे सॉफ्टवेयर को इस बात पर ध्यान देना चाहिए कि इसे कौन से उपयोगकर्ता इनपुट में स्वीकार करते हैं?