Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. General

संविदा: सेमेन्टिक्स का प्रैक्टिकल साइड

by
Length:MediumLanguages:

Hindi (हिंदी) translation by Afiff Soebarkah (you can also view the original English article)

हम सभी जानते हैं कि हमें अर्थपूर्ण कोड लिखना चाहिए। शायद, आप भी या का उपयोग कर रहे हैं, और अपने बारे में बहुत अच्छा महसूस करते हैं। लेकिन, क्या आप उस अनुबंधित अनुबंध पर विचार कर रहे हैं जो आपके कोड पर मौजूद है?

आइए कल्पना करें कि एक ग्राहक एक टेक्स्ट लिंक का अनुरोध करता है, "अधिक देखें," जो पृष्ठ पर अतिरिक्त टेक्स्ट प्रकट करना चाहिए। एक क्लिक हैंडलर के साथ और देखें पूरी तरह से काम करना चाहिए, है ना? अरे, यह अनुरोध के रूप में दिखता है और काम करता है!

नहीं, यह हमेशा सही ढंग से काम नहीं करेगा, क्योंकि यह आपके और ब्राउज़र के बीच अनुबंध का उल्लंघन करता है। विशेष रूप से, मैं उस व्यक्ति का जिक्र कर रहा हूं जो कहता है कि href विशेषता में एक मान होना चाहिए जो वैध यूआरएल है।

ऐसी व्यावहारिक समस्याएं हैं जो अनुबंधों का उल्लंघन करते समय उत्पन्न हो सकती हैं, और उन शब्दों की तुलना में अर्थपूर्ण कोड लिखने के उन बेहतर कारण हैं जिन्हें आप आमतौर पर "अर्थपूर्ण" शब्द सुनते समय सोचते हैं।


अर्थपूर्ण संहिता के लिए लोकप्रिय तर्क

वहां रहे हैं, तथापि, और अधिक व्यावहारिक कारणों शब्दार्थ: ठेके के बारे में परवाह है ।

यदि आप एक औसत डेवलपर क्या अर्थ कोड के मूल्य पूछना, आप की संभावना की तर्ज साथ कुछ सुना होगा:

  • यह विकलांगों की सहायता
  • ठीक से कोड का वर्णन यह आसान मशीनों के लिए व्याख्या करने के लिए बनाता है

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

अन्य मामलों में, आप भी चक्रीय तर्क सुन सकते हैं, जैसे कि "गैर-अर्थ कोड बुरा है, क्योंकि यह सार्थक नहीं है." यह इस बात को इस तरह एक लोकप्रिय धारणा है कि इस पर पैरोडी पहले से ही वेब के आसपास उछला है!

वहां रहे हैं, तथापि, और अधिक व्यावहारिक कारणों शब्दार्थ: ठेके के बारे में परवाह है ।


उपयोग अनुबंध

किसी भी समय है कि आप कुछ ब्राउज़र विक्रेताओं, अपनी प्रोग्रामिंग भाषा, या एक एपीआई द्वारा प्रदान की कार्यक्षमता का उपयोग करें, आप एक अनुबंध पर निर्भर कर रहे हैं ।

अनुबंध के एक तरफ कार्यक्षमता का एक प्रदाता मौजूद है । उदाहरण के लिए, जब आप किसी टैग का उपयोग करते <a>हैं, तो ब्राउज़र डेवलपर आपसे यह वादा करते हैं कि वे आपके अनुप्रयोग के उपयोगकर्ता के लिए निर्दिष्ट URL पर नेविगेट करने के लिए एक आसान तरीका प्रदान करेंगे.</a>

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

ब्राउज़र कार्यक्षमता अनुबंध

चलो पहले से "और अधिक देखें" उदाहरण के लिए लौटें । जावास्क्रिप्ट के शुरुआती दिनों में, डेवलपर्स के एक छद्म प्रोटोकॉल, जावास्क्रिप्ट का उपयोग कर अपने जावास्क्रिप्ट लिखना होगा:

अपेक्षाकृत जल्दी, वे महसूस करते है कि इस दृष्टिकोण कम से एक व्यावहारिक दोष है शुरू: जावास्क्रिप्ट कोड ब्राउज़र है, जो पेशेवर नहीं दिखता की स्थिति पट्टी में प्रदर्शित होता है । इस दुविधा का जवाब एक onclick हेंडलर के लिए कोड को स्थानांतरित करने के लिए गया था, और एक खाली हैश पहचानकर्ता के साथ href गुण की जगह, जैसे कि:

बेशक, यह सब कुछ हल नहीं किया । यदि ShowMore एक त्रुटि है, वापस झूठी कभी नहीं कहा जाता है, और पृष्ठ के लिए ऊपर स्क्रॉल है-निश्चित रूप से वांछित व्यवहार नहीं है ।

आज, डेवलपर्स अपने HTML और जावास्क्रिप्ट अलग और उचित घटना की रोकथाम की तकनीक का उपयोग करें:

लेकिन लगता है क्या? वहां अभी भी इस दृष्टिकोण के साथ बहुत सारी समस्याएं हैं: एक नया टैब में खोलने, बुकमार्क करने या लिंक की नकल उपयोगकर्ता के रूप में काम नहीं करता है (विशेष रूप से <base> , अगर वहां पृष्ठ पर एक टैग है), जो भ्रम में परिणाम है, और शायद, एक खो ग्राहक की उंमीद कर सकते हैं ।

सूचना कैसे सभी समस्याओं को अब तक वर्णित एक ही तथ्य से उठी । डेवलपर्स ब्राउज़र निर्माताओं के साथ अनुबंध के अपने हिस्से का उल्लंघन किया गया है: href गुण एक सही यूआरएल शामिल होना चाहिए, लेकिन, इसके बजाय, डेवलपर्स कचरे के सभी प्रकार के डालने थे ।

अगर हम अपने अनुबंध के अनुरूप करने की कोशिश, हम अपने आप से पूछना चाहिए: "क्यों अनुबंध हमें करने की अनुमति नहीं है कि हम क्या जरूरत है?" जवाब सरल है: हम <a>टैग दुरुपयोग । हम केवल इसका उपयोग करते हैं, क्योंकि हम चाहते हैं कि पाठ "अधिक देखें" दिखाई दे और एक लिंक की तरह व्यवहार करे.</a> हालांकि, जब हम शब्दों का उपयोग करें, जैसे कि "देखो" और "दिखाई देते हैं," यह सीएसएस का डोमेन नहीं है? क्या यह "अधिक" लिंक, वास्तविकता में, बस एक बटन देखें? इस को लागू करने के लिए आसान है:

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

ज़रूर, यह सीएसएस के कुछ अतिरिक्त लाइनों की आवश्यकता को डिफ़ॉल्ट बटन स्टाइल के कुछ रीसेट हो सकता है । यह इसके लायक है! आलसी मत बनो ।

ठेके के रूप में निर्दिष्टीकरण

जो अर्थों को पता था, और उंहें अनजाने में नजरअंदाज कर दिया ।

2005 में, वेब विकास समुदाय का एक बड़ा हिस्सा कठिन तरीका है कि HTTP आवश्यकताओं की अनदेखी बुरा है सीखा है । नए रिलीज़ किए गए Google वेब एक्सेलेरेटर एक क्लिक पर उपयोगकर्ता के प्रतीक्षा समय को कम करने के लिए किसी पृष्ठ पर url को फिर से प्राप्त करता है ।

यह अनुप्रयोग है, जो HTTP नजरअंदाज कर दिया, और सरल लिंक के पीछे विनाशकारी आपरेशनों डाल में कहर बर्बाद । और वहां कई ऐसे आवेदन थे ।

समस्या डेवलपर्स जो HTTP तरीकों का शब्दार्थ समझ में नहीं आया के हाथों में आराम नहीं किया । नहीं, समस्या यह है जो अर्थ पता था से आया है, अनजाने में उंहें नजरअंदाज कर दिया, और ज्ञान का हिस्सा नहीं था ।


रखरखाव अनुबंध

भ्रामक कोड बुरा है!

डेवलपर्स के बीच अनुबंध भी मौजूद हैं। हर बार जब आप कोड की एक पंक्ति लिखते हैं, तो आप भावी डेवलपर्स को एक वादा करते हैं कि यह वही करता है जो ऐसा लगता है। दूसरे शब्दों में, भ्रमित कोड खराब है!

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

इसके बजाय, सूची में स्पष्ट लूपिंग का उपयोग करें:

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

किसी के लिए लूप का उपयोग करने के लिए ऊपर स्निपेट की तुलना करें:

दूसरा संस्करण बदतर है, न केवल क्योंकि यह अब है, लेकिन यह भी है क्योंकि array_filter एक उंमीद प्रदान करता है । यह स्पष्ट है कि $profits $incomes का एक सबसेट है । पाश के लिए एक सामांय के साथ कोई ऐसी संमेलन है, जो बताते है कि क्यों हम किसी भी मांयताओं नहीं कर सकते, पहले पाश के अंदरूनी गूढ़ रहस्य के बिना ।


ठीक से लेखन अर्थ कोड

कैसे आप कोड के बीच अंतर है कि और अर्थ नहीं है? आप इन अनुबंधों को कैसे नोटिस करते हैं? अधिकांश भाग के लिए, बस अपने सवाल पूछ पर्याप्त चाहिए ।

HTML टैग

"मैं एक का उपयोग कर रहा हूँ  टैग और मुझे किसी href विशेषता में कुछ डालने की आवश्यकता है। href लिंक लक्ष्य गंतव्य स्टोर करता है। तो मेरा टैग लिंक कहां है? "कहीं नहीं? खैर, मैं तब निष्कर्ष निकाल सकता हूं कि मैं शायद इस टैग का दुरुपयोग कर रहा हूं।

नामांकित फ़ंक्शंस

"मुझे फ़िल्टर सूची में मेरी सूची की सामग्री को मुद्रित करने की आवश्यकता है। फ़िल्टरिंग प्रक्रिया के आइटम को मुद्रित कर रहा है? "वास्तव में नहीं। इसका मतलब है कि मैं फ़िल्टर का दुरुपयोग कर रहा हूं।

कार्य जो बहुत अधिक करते हैं

"मैं एक getFoo विधि लिख रहा हूं, और इसके भीतर कुछ संशोधन कोड जोड़ने की जरूरत है । क्या संशोधित कर रही फू के भाग के रूप में राज्य अर्थ है? किसी को भी, जो बस फू उंमीद है कि कुछ और होता है चाहता है? संभावना नहीं!

चिंताओं का पृथक्करण

"मैं एक HTML ऑनक्लिक विशेषता के भीतर कुछ जावास्क्रिप्ट जोड़ना चाहता हूं। क्या यह सही है? "जिस फ़ाइल को आप संशोधित कर रहे हैं वह है। एचटीएमएल, है ना? इसके बजाय, क्रमशः .js और .css फ़ाइलों के भीतर अपनी जावास्क्रिप्ट और सीएसएस रखें। हमेशा।

बेशक, कई मामलों में, स्थिति का सही आकलन करने के लिए कुछ अतिरिक्त ज्ञान की आवश्यकता हो सकती है। सबसे महत्वपूर्ण बात यह है कि इन चीजों के बारे में सोचना शुरू करें, और सिद्धांत "यह (थोड़े) काम से बचने के लिए, इसलिए यह काफी अच्छा है।" इसके बजाय, हमेशा खुद से पूछें, "मैं जो कोड लिख रहा हूं उसका वास्तव में क्या मतलब है?"


निष्कर्ष

अनुबंध का उल्लंघन करना सुनिश्चित करता है कि सहयोग टूट जाएगा।

सहयोग हमेशा दोनों पक्षों के प्रयासों पर निर्भर करता है। अधिकांश सॉफ्टवेयर विकास सहयोग को कम कर देता है: हार्डवेयर निर्माताओं, सिस्टम प्रोग्रामर, ब्राउज़र डेवलपर्स, लाइब्रेरी लेखकों, वेबसाइट डेवलपर्स और कई अन्य लोगों के बीच सहयोग। एक अनुबंध का उल्लंघन सुनिश्चित करता है कि सहयोग टूट जाएगा ।

कोड अर्थशास्त्र एक ऐसा अनुबंध है। अपने आप के लिए इसके बारे में परवाह करें!


फ़ुटनोट

अर्थ: शब्द "अर्थ" अक्सर गलत समझा जाता है । इस अनुच्छेद के संदर्भ में, मैं शब्द का उपयोग करने के लिए कोड का अर्थ कोड उत्पादन से अलग । उदाहरण के लिए, एक टैग के अर्थ अर्थ <a>एक कड़ी का प्रतिनिधित्व है, जबकि सरल, व्यावहारिक अर्थ यह क्लिक करने के लिए, पाठ रेखांकित है ।</a>

कड़ाई से बोल, एक खाली टुकड़ा पहचानकर्ता # इस संदर्भ में मांय माना जा सकता है । इस तकनीकी, तथापि, बात मैं लेख में करना याद करता है ।

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.