क्या मुझे सीमा के बाहर सार्थक मूल्य के मामले में अपवाद छोड़ देना चाहिए या खुद को संभालना चाहिए?


42

मैंने एक संरचना लिखी है जो अक्षांश / देशांतर निर्देशांक का प्रतिनिधित्व करती है। उनके मान लॉन्गिट्यूड के लिए -180 से 180 और लेटिट्यूड के लिए 90 -90 तक हैं।

यदि उस संरचना का कोई उपयोगकर्ता मुझे उस सीमा से बाहर मूल्य देता है, तो मेरे पास 2 विकल्प हैं:

  1. एक अपवाद फेंको (सीमा से बाहर आ गया)
  2. मूल्य को बाधा में परिवर्तित करें

क्योंकि -185 के एक समन्वय का अर्थ है (इसे बहुत आसानी से +175 में बदला जा सकता है क्योंकि वे ध्रुवीय निर्देशांक हैं), मैं इसे स्वीकार कर सकता हूं और इसे परिवर्तित कर सकता हूं।

क्या उपयोगकर्ता को यह बताने के लिए एक अपवाद को फेंकना बेहतर है कि उसके कोड ने मुझे एक मूल्य दिया है जो उसके पास नहीं होना चाहिए?

संपादित करें: इसके अलावा, मुझे लेट / लैंग और निर्देशांक के बीच का अंतर पता है, लेकिन मैं इसे आसान चर्चा के लिए सरल बनाना चाहता था - यह विचारों का उज्ज्वल नहीं था


13
क्या उपयोगकर्ता को सीमा से बाहर मूल्य डालने की अनुमति दी जानी चाहिए? यदि उत्तर नहीं है, तो एक अपवाद फेंक दें। यदि नियम उतने सख्त नहीं हैं, तो रूपांतरण करें, लेकिन दस्तावेज में स्पष्ट रूप से बताएं कि रूपांतरण हो सकता है। यह भी जान लें कि कुछ भाषाओं में अपवाद को संभालना काफी महंगा है।
एंडी

सी #, क्या यह मायने रखता है? यह मूल रूप से बाधाओं का समर्थन नहीं करता है यदि यह वही है जो आपका मतलब है।
। गिंकिस

2
यह मुझे बहुत स्पष्ट लगता है, फिर, सही दृष्टिकोण उपयोगकर्ता को सीमा के बाहर कुछ भी इनपुट करने के लिए रोक रहा है और ऐसा करने पर एक अपवाद फेंक देता है (यदि मानक कहता है कि एब्स मूल्य 180 से ऊपर नहीं होना चाहिए, इससे बड़ा मूल्य है एक स्पष्ट उल्लंघन)। वैसे, C # वास्तव में उन भाषाओं में से एक है जहां अपवाद काफी महंगे हैं, इसलिए उनका उपयोग केवल स्थितियों में ही करें, जो असाधारण हैं, इसका मतलब यह नहीं है कि यह आपके आवेदन को तोड़ देगा, इस तरह की परिस्थितियां।
एंडी

2
मैं विशेष पैरामीटर मानों को पारित करके उपयोगकर्ता के 'मतलब' के बारे में धारणा बनाने से दूर रहना चाहता हूं, खासकर उन लोगों के लिए जो मेरा कोड पूरा नहीं करते हैं। एक समान मामले की तरह लगता है।
J --Mᴇᴇ

2
वेब मरकेटर निर्देशांकों हैं नहीं -180 से 180 और -90 90. करने के लिए अक्षांश / देशांतर है (और वहाँ उस के लिए भी कई समन्वय प्रणाली कर रहे हैं) के लिए। मर्केटर अनुमान आमतौर पर हजारों या लाखों की संख्या में होते हैं और "मीटर" की इकाइयाँ होती हैं (सख्ती से भी नहीं, क्योंकि प्रत्येक इकाई की लंबाई वास्तविक जमीन की दूरी को बढ़ाती है क्योंकि आप ध्रुवों के पास जाते हैं), डिग्री नहीं। डिग्री के संदर्भ में भी, यह 12 85.051129 डिग्री के लिए विवश है क्योंकि प्रक्षेपण ध्रुवों पर असीम रूप से विस्तृत हो जाता है। (मैंने इसे संपादित करते हुए इसे ठीक किया है, क्योंकि यह सवाल का मूल नहीं है।)
jpmc26

जवाबों:


51

यदि आपके प्रश्न का मूल यह है ...

यदि कुछ क्लाइंट कोड एक तर्क देता है जिसका मूल्य इस बात के लिए अमान्य है कि मेरी डेटा संरचना मॉडलिंग कर रही है, तो क्या मुझे मूल्य को अस्वीकार करना चाहिए या इसे कुछ समझदार में बदलना चाहिए?

... तो मेरा सामान्य उत्तर "अस्वीकार" होगा, क्योंकि यह क्लाइंट कोड में संभावित बगों पर ध्यान आकर्षित करने में मदद करेगा जो वास्तव में प्रोग्राम में प्रकट होने और आपके निर्माता तक पहुंचने के लिए अमान्य मान का कारण बन रहे हैं। बग पर ध्यान आकर्षित करना आम तौर पर अधिकांश प्रणालियों में एक वांछित संपत्ति है, कम से कम विकास के दौरान (जब तक कि यह आपके सिस्टम की वांछित संपत्ति नहीं है त्रुटियों के मामले में गड़बड़ करना)।

सवाल यह है कि क्या आप वास्तव में उस मामले का सामना कर रहे हैं

  • यदि आपकी डेटा संरचना सामान्य रूप से ध्रुवीय निर्देशांक मॉडल करने का इरादा है, तो मान स्वीकार करें क्योंकि -180 और +180 श्रेणी के कोण वास्तव में अमान्य नहीं हैं। वे पूरी तरह से मान्य हैं और वे हमेशा एक समतुल्य होते हैं, जो -180 और +180 की सीमा के भीतर होता है (और यदि आप उन्हें उस श्रेणी को लक्षित करने के लिए परिवर्तित करना चाहते हैं, तो मुक्त महसूस करें - ग्राहक कोड को आमतौर पर देखभाल करने की आवश्यकता नहीं होती है) ।

  • यदि आपकी डेटा संरचना स्पष्ट रूप से वेब मर्केटर समन्वय करती है (इसके प्रारंभिक रूप में प्रश्न के अनुसार), तो विनिर्देश में उल्लिखित किसी भी प्रावधान का पालन करना सबसे अच्छा है (जो मुझे नहीं पता है, इसलिए मैं इसके बारे में कुछ नहीं कहूंगा) । यदि आप जिस चीज़ की मॉडलिंग कर रहे हैं, उसके विनिर्देश कहते हैं कि कुछ मान अमान्य हैं, तो उन्हें अस्वीकार कर दें। यदि यह कहता है कि उन्हें कुछ समझदार के रूप में व्याख्या की जा सकती है (और इस प्रकार वे वास्तव में वैध हैं), तो उन्हें स्वीकार करें।

आपके द्वारा उपयोग किया जाने वाला तंत्र यह संकेत देने के लिए उपयोग करता है कि मान स्वीकार किए गए हैं या नहीं, यह आपकी भाषा की विशेषताओं, इसके सामान्य दर्शन और आपके प्रदर्शन की आवश्यकताओं पर निर्भर करता है। तो, आप एक अपवाद (कंस्ट्रक्टर में) फेंक सकते हैं या अपनी संरचना के एक अशक्त संस्करण को वापस कर सकते हैं (एक स्थिर विधि के माध्यम से जो एक निजी कंस्ट्रक्टर को आमंत्रित करता है) या एक बूलियन लौटाता है और एक outपैरामीटर के रूप में कॉलर को आपकी संरचना को पारित कर रहा है (फिर से) स्थैतिक विधि जो एक निजी कंस्ट्रक्टर को आमंत्रित करती है), और इसी तरह।


12
रेंज -180 से +180 के बाहर के देशांतर को संभवतः स्वीकार्य माना जाना चाहिए, लेकिन रेंज -90 से +90 के बाहर अक्षांश निरर्थक प्रतीत होगा। एक बार जब कोई उत्तरी या दक्षिणी ध्रुव पर पहुंचता है, तो आगे की यात्रा उत्तर या दक्षिण अपरिभाषित होती है।
सुपरकैट

4
@supercat मैं आपसे सहमत हूं, लेकिन चूंकि मुझे नहीं पता कि वेब मर्केटर विनिर्देश में कौन से मूल्य वास्तव में अमान्य हैं, इसलिए मैं किसी भी कठिन निष्कर्ष को नहीं निकालने की कोशिश कर रहा हूं। ओपी समस्या डोमेन को मुझसे बेहतर जानता है।
थियोडोरोस चट्जीगानियाकिंस

1
@ सुपरकैट: आरंभ जहां मेरिडियन भूमध्य रेखा तक पहुंचता है। अक्षांश के अनुसार मध्याह्न के साथ यात्रा करें। यदि अक्षांश> 90 है तो बस उसी महान वृत्त के साथ चलते रहें। कोई दिक्कत नहीं है। इसे दस्तावेज दें और बाकी ग्राहक को छोड़ दें।
केविन क्लाइन

4
@ सुपरकैट यह उससे भी बदतर है। वेब मर्केटर प्रोजेक्शन में, actually 90 वास्तव में एक अनंत चौड़ाई का अनुमान लगाता है। तो मानक वास्तव में at 85.051129 पर इसे काट देता है। इसके अलावा, अव्यक्त / लंबे! = वेब व्यापारी निर्देशांक। Mercator निर्देशांक मीटर की भिन्नता का उपयोग करते हैं, डिग्री का नहीं। (जैसा कि आप ध्रुवों के करीब आते हैं, प्रत्येक "मीटर" वास्तव में जमीन के एक बड़े और बड़े टुकड़े से मेल खाता है।) ओपी निर्देशांक विशुद्ध रूप से अव्यक्त / लंबे हैं। वेब मर्केटर का उनके साथ कोई लेना-देना नहीं है, इसके अलावा वे एक वेब मर्केटर बेस मैप के शीर्ष पर प्रदर्शित हो सकते हैं और कुछ स्थानिक पुस्तकालय उनके लिए हुड के तहत पेश कर रहे हैं।
jpmc26

1
मुझे कहना चाहिए कि "" 85.051129 के बराबर ", क्योंकि यह वास्तविक समन्वय नहीं है।
jpmc26

10

यह बहुत कुछ निर्भर करता है। लेकिन आपको कुछ करने और दस्तावेज़ करने का निर्णय लेना चाहिए ।

आपके कोड के लिए केवल निश्चित रूप से गलत बात यह है कि यह विचार करने के लिए भूल जाएं कि उपयोगकर्ता इनपुट अपेक्षित सीमा से बाहर हो सकता है, और कोड लिखें जो गलती से कुछ व्यवहार करते हैं। क्योंकि उसके बाद कुछ लोगों को कैसे अपने कोड बर्ताव करता है के बारे में एक गलत धारणा है कर देगा और यह कीड़े का कारण होगा, जबकि दूसरों को खत्म हो जाएगा निर्भर करता है के व्यवहार को अपने कोड गलती है (भले ही है कि व्यवहार पूरी तरह से bonkers है) पर और इसलिए आप अधिक कीड़े का कारण बन जाएगा जब आप बाद में समस्या को ठीक करते हैं।

इस मामले में मैं या तो तर्क देख सकता हूं। अगर कोई 175 डिग्री से +10 डिग्री यात्रा करता है, तो उन्हें -175 पर समाप्त होना चाहिए। यदि आप हमेशा उपयोगकर्ता इनपुट को सामान्य करते हैं और इसलिए 185 को -175 के बराबर मानते हैं तो क्लाइंट कोड गलत काम नहीं कर सकता है जब यह 10 डिग्री जोड़ता है; इसका हमेशा सही प्रभाव पड़ता है। यदि आप 185 को एक त्रुटि के रूप में मानते हैं, तो आप हर मामले को बल देते हैं, जहां क्लाइंट कोड सामान्यीकरण तर्क में डालने के लिए रिश्तेदार डिग्री जोड़ रहा है (या कम से कम अपनी सामान्यीकरण प्रक्रिया को कॉल करना याद रखें), आप वास्तव में कारण बनेंगेबग्स (हालांकि उम्मीद है कि आसानी से पकड़ने के लिए आसान है कि जल्दी से टूट जाएगा)। लेकिन अगर एक देशांतर संख्या उपयोगकर्ता-दर्ज की गई है, जो प्रोग्राम में शाब्दिक रूप से लिखी गई है, या हमेशा [-180, 180) में होने वाली कुछ प्रक्रिया के माध्यम से गणना की जाती है, तो उस सीमा के बाहर एक मूल्य त्रुटि का संकेत देने की संभावना है, इसलिए "सहायक रूप से" "इसे परिवर्तित करने से समस्याएं छिप सकती हैं।

इस मामले में मेरा आदर्श शायद एक प्रकार को परिभाषित करना होगा जो सही डोमेन का प्रतिनिधित्व करता है। एक अमूर्त प्रकार का उपयोग करें (ग्राहक कोड को केवल उसके अंदर कच्चे नंबरों तक पहुँचने न दें), और दोनों को एक सामान्य और एक मान्य फैक्टरी प्रदान करें (ताकि ग्राहक ट्रेडऑफ़ कर सके)। लेकिन जो कुछ भी इस प्रकार का बनाया जाता है, 185 को आपके सार्वजनिक एपीआई के माध्यम से देखे जाने पर -175 से अप्रभेद्य होना चाहिए (इससे कोई फर्क नहीं पड़ता कि वे निर्माण में परिवर्तित हैं या आप समानता, एक्सेसर्स और अन्य ऑपरेशन प्रदान करते हैं जो किसी भी तरह से अंतर को अनदेखा करते हैं) ।


3

यदि आपके लिए एक समाधान चुनना वास्तव में मायने नहीं रखता है, तो आप उपयोगकर्ता को केवल निर्णय लेने दे सकते हैं।

यह देखते हुए कि आपकी संरचना आसानी से मूल्य वस्तु है और एक विधि / निर्माणकर्ता द्वारा बनाई गई है, आप उपयोगकर्ता द्वारा दिए गए विकल्पों के आधार पर दो अधिभार प्रदान कर सकते हैं:

  • एक अपवाद फेंको (सीमा से बाहर आ गया)
  • मूल्य को बाधा में परिवर्तित करें

इसके अलावा कभी भी उपयोगकर्ता के पास आपके अन्य तरीकों से गुजरने के लिए एक अमान्य संरचना नहीं है, इसे सही तरीके से बनाएं।

संपादित करें: टिप्पणियों के आधार पर, मुझे लगता है कि आप c # का उपयोग कर रहे हैं।


इनपुट के लिए धन्यवाद! मैं इसके बारे में सोचूंगा, हालांकि मुझे डर है कि यह अपवाद फेंकने वाले निर्माण के उद्देश्य को कम कर देगा, अगर कोई इससे बच सकता है। हालांकि यह दिलचस्प है!
। गिस्किंस

यदि आप इस विचार का उपयोग करने जा रहे हैं, तो इंटरफ़ेस को परिभाषित करना और दो कार्यान्वयन करना बेहतर होगा जो फेंक या परिवर्तित होते हैं। जैसा कि आपने वर्णित किया है, एक रचनात्मक तरीके से एक रचनाकार को अधिभार करना मुश्किल होगा।

2
@ स्नोमैन: हाँ, एक निर्माता को एक ही तर्क प्रकार के साथ अधिभारित करना मुश्किल होगा, लेकिन दो स्थिर तरीकों और एक निजी निर्माता के लिए मुश्किल नहीं होगा।
१०:१०

1
@ K.Gkinis: अपवाद फेंकने वाले निर्माता का उद्देश्य "यह सुनिश्चित नहीं करता है कि आवेदन मर जाता है" - आखिरकार, ग्राहक हमेशा catchआपके अपवाद हो सकते हैं । जैसा कि दूसरों ने कहा है, यह ग्राहक को खुद को प्रतिबंधित करने की अनुमति देने की अनुमति देता है यदि वह ऐसा चाहता है। तुम सच में कुछ भी नहीं दरकिनार कर रहे हो।
व्रजगिन

यह सुझाव बिना किसी लाभ के कोड को जटिल बनाता है। या तो विधि को अमान्य इनपुट में परिवर्तित करना चाहिए या इसे नहीं करना चाहिए। दो अधिभार होने से दुविधा को हल किए बिना कोड अधिक जटिल हो जाता है।
जैक्सबी

0

यह निर्भर करता है कि इनपुट कुछ यूआई के माध्यम से उपयोगकर्ता से सीधे है, या यह सिस्टम से है।

एक UI के माध्यम से इनपुट

यह एक उपयोगकर्ता अनुभव का सवाल है कि अमान्य इनपुट को कैसे संभालना है। मैं आपके विशिष्ट मामले के बारे में नहीं जानता, लेकिन सामान्य तौर पर कुछ विकल्प हैं:

  • उपयोगकर्ता को त्रुटि के लिए चेतावनी दें और उपयोगकर्ता को आगे बढ़ने से पहले इसे ठीक करें (सबसे आम)
  • स्वचालित रूप से मान्य श्रेणी (यदि संभव हो) में कनवर्ट करें, लेकिन उपयोगकर्ता को परिवर्तन के लिए सचेत करें और उपयोगकर्ता को आगे बढ़ने से पहले सत्यापित करने की अनुमति दें।
  • चुपचाप मान्य श्रेणी में परिवर्तित करें और आगे बढ़ें।

चुनाव आप उपयोगकर्ताओं की अपेक्षाओं पर निर्भर करता है और डेटा कितना महत्वपूर्ण है। उदाहरण के लिए, Google स्वचालित रूप से प्रश्नों में वर्तनी को ठीक कर देता है, लेकिन यह कम जोखिम है क्योंकि एक अनचाहा परिवर्तन एक समस्या नहीं है और इसे ठीक करना आसान है (और फिर भी परिणाम पृष्ठ पर यह स्पष्ट किया जाता है कि क्वेरी बदल गई थी)। दूसरी ओर, यदि आप एक परमाणु मिसाइल के लिए निर्देशांक में प्रवेश कर रहे हैं, तो आप अधिक कठोर इनपुट सत्यापन और अवैध डेटा का कोई मूक सुधार नहीं चाहते हैं। तो कोई सार्वभौमिक उत्तर नहीं है।

सबसे महत्वपूर्ण बात, आपको विचार करना चाहिए कि क्या इनपुट को सही करने से उपयोगकर्ता के लिए भी लाभ होता है। उपयोगकर्ता अवैध डेटा क्यों दर्ज करेगा? यह देखना आसान है कि कोई व्यक्ति वर्तनी की त्रुटि कैसे कर सकता है, लेकिन -185 के देशांतर में कोई क्यों प्रवेश करेगा? यदि उपयोगकर्ता वास्तव में +175 का मतलब होता है, तो वे संभवतः +175 टाइप करेंगे। मुझे लगता है कि यह सबसे अधिक संभावना है कि एक अमान्य देशांतर बस एक टाइपिंग त्रुटि है, और उपयोगकर्ता का अर्थ है -85 या कुछ और। इस मामले में चुपचाप धर्मान्तरित करना बुरा और अशुभ है । आपके लिए ऐप के लिए सबसे अधिक उपयोगकर्ता के अनुकूल दृष्टिकोण संभवतः उपयोगकर्ता को अमान्य मान के लिए सचेत करना होगा, और उपयोगकर्ता को इसे स्वयं सही करना होगा।

एक एपीआई के माध्यम से इनपुट

यदि इनपुट किसी अन्य सिस्टम या सबसिस्टम से है, तो कोई प्रश्न नहीं है। आपको एक अपवाद फेंक देना चाहिए। आपको कभी भी अमान्य इनपुट को किसी अन्य सिस्टम से परिवर्तित नहीं करना चाहिए, क्योंकि यह सिस्टम में कहीं और त्रुटियों को मास्क कर सकता है। यदि इनपुट "सही" है, तो यह UI परत में होना चाहिए, सिस्टम में गहराई से नहीं।


0

आपको एक अपवाद फेंक देना चाहिए।

आपके द्वारा दिए गए उदाहरण में, 185 भेजना और उस -175 में परिवर्तित करना, फिर कुछ मामलों में उस कार्यक्षमता को प्रदान करना आसान हो सकता है। लेकिन क्या होगा अगर कॉलर 1 मिलियन भेजता है? क्या वे वास्तव में इसका मतलब बदलना चाहते हैं? यह अधिक संभावना है कि एक त्रुटि है। इसलिए यदि आपको 1,000,000 के लिए अपवाद नहीं बल्कि 185 के लिए फेंकने की आवश्यकता है, तो आपको अपवाद को फेंकने के लिए एक मनमानी सीमा के बारे में निर्णय करना होगा। थ्रेसहोल्ड आपको कुछ समय के लिए यात्रा करने वाला है क्योंकि कुछ कॉलिंग ऐप थ्रेसहोल्ड के आसपास मान भेज रहा है।

सीमा से बाहर के मूल्यों के अपवाद को फेंकना बेहतर है।


-1

किसी डेवलपर के लिए सबसे सुविधाजनक विकल्प रेंज से बाहर के मानों के लिए मंच में एक संकलन समय त्रुटि समर्थन होगा। इस मामले में, सीमा भी पैरामीटर के प्रकार की तरह, विधि हस्ताक्षर का हिस्सा होनी चाहिए। उसी तरह आपका एपीआई उपयोगकर्ता एक स्ट्रिंग को पास नहीं कर सकता है यदि आपके विधि हस्ताक्षर को पूर्णांक लेने के लिए परिभाषित किया गया है , तो उपयोगकर्ता को यह जांचे बिना मान पास करने में सक्षम नहीं होना चाहिए कि मान विधि हस्ताक्षर में दी गई सीमा के भीतर है या नहीं। यदि जाँच नहीं की गई है, तो उसे एक संकलन समय त्रुटि मिलनी चाहिए और इस प्रकार, रनटाइम त्रुटि से बचा जा सकता है।

लेकिन वर्तमान में, बहुत कम संकलनकर्ता / मंच इस प्रकार के संकलन समय की जाँच का समर्थन करते हैं। तो, यह एक डेवलपर्स सिरदर्द है। लेकिन आदर्श रूप से, आपकी विधि को असमर्थित मानों के लिए एक सार्थक अपवाद फेंकना चाहिए और इसे स्पष्ट रूप से दस्तावेज़ित करना चाहिए।

BTW, मैं वास्तव में यहाँ जो डफी द्वारा प्रस्तावित त्रुटि मॉडल प्यार करता हूँ ।


आप उपयोगकर्ता इनपुट के लिए संकलन समय त्रुटियाँ कैसे प्रदान करेंगे?
जैक्सबी

@JacquesB संकलक एक त्रुटि जारी करेगा यदि प्रविष्टि के बाद उपयोगकर्ता इनपुट को सीमा के भीतर होने की जाँच नहीं की जाती है, भले ही वास्तविक मूल्य सीमा के भीतर हो।
गुलशन

लेकिन फिर भी आपको यह तय करना होगा कि क्या आप इनपुट को अस्वीकार करना चाहते हैं या एक वैध सीमा में परिवर्तित करना चाहते हैं, इसलिए यह मूल प्रश्न का उत्तर नहीं देता है।
जैक्सबी

@JacquesB मुझे यह कहना चाहिए, पहली बार में - मैंने हमेशा सोचा था कि, ओपी एक एपीआई विकसित कर रहा है और यूआई किसी और द्वारा विकसित किया गया है, अपने एपीआई का उपभोग कर रहा है। मैं इस बात को लेकर गलत था। मैंने बस प्रश्न को फिर से पढ़ा और इसे महसूस किया। मैं यह कह रहा हूं कि एपीआई उपभोक्ताओं पर सत्यापन किया जाना चाहिए और यदि नहीं, तो संकलक को एक त्रुटि फेंकनी चाहिए।
गुलशन

तो ... आपको एक नया वर्ग बनाने की आवश्यकता है जिसमें इनपुट और मान्य हैं। जब आप कच्चे इनपुट से क्लास ऑब्जेक्ट का निर्माण करते हैं, तो क्या होता है? एक अपवाद फेंको? चुपचाप पास? आप सिर्फ समस्या को आगे बढ़ाएं।
djechlin

-1

डिफ़ॉल्ट एक अपवाद को फेंकना चाहिए। आप इस तरह के विकल्प की अनुमति भी दे सकते हैं strict=falseऔर झंडे के आधार पर कर सकते हैं, जहां निश्चित रूप strict=trueसे डिफ़ॉल्ट है। यह काफी सामान्य है:

  • जावा लिनेन्टDateFormat का समर्थन करता है ।
  • Gson के JSON पार्सर भी एक उदार मोड का समर्थन करता है।
  • आदि।

यह बिना किसी लाभ के कोड को जटिल बनाता है।
जैक्सबी

@JacquesB डिफ़ॉल्ट रूप से अपवाद फेंक रहा है, या अनुमति दे रहा है strict=false?
djechlin

@JacquesB मैंने एपीआई के कुछ उदाहरण जोड़े हैं जो सख्त और उदार मोड का समर्थन करते हैं, कृपया देखें।
djechlin

-2

मेरे लिए सबसे अच्छा अभ्यास उपयोगकर्ता इनपुट को कभी नहीं बदलना है। आमतौर पर मैं जो दृष्टिकोण लेता हूं, वह मान्यता को निष्पादन से अलग करना है।

  • एक साधारण वर्ग है जो बस दिए गए मापदंडों का उपयोग करता है।
  • सत्यापन की एक परत प्रदान करने के लिए एक डेकोरेटर का उपयोग करें, जिसे निष्पादन वर्ग को प्रभावित किए बिना बदल दिया जाएगा (या यदि यह दृष्टिकोण बहुत कठिन है तो सत्यापनकर्ता को इंजेक्ट करें)।

"उपयोगकर्ता" जिस प्रश्न का जिक्र कर रहा है, वह एपीआई का उपयोग करने वाला डेवलपर है, न कि अंतिम उपयोगकर्ता ...
जे एलस्टन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.