कोडिंग मानकों को तोड़ना [बंद]


35

सॉफ्टवेयर कंपनियों में विभिन्न कोडिंग मानक लागू किए गए हैं जो कोड विश्वसनीयता बढ़ाने, पोर्टेबिलिटी, और सबसे महत्वपूर्ण बात, विभिन्न डेवलपर्स द्वारा संयुक्त रूप से लिखे गए कोड में पठनीयता का लक्ष्य है।

दो उल्लेखनीय उदाहरण MISRA C और JSF प्रोजेक्ट के लिए विकसित C ++ मानक हैं ।

ये आमतौर पर निम्नलिखित रूप में होते हैं, ध्यान से निर्दिष्ट करने के बाद कि शब्द "क्या", "चाहिए", "चाहिए", "हो सकता है", आदि का मतलब है:

उदाहरण:

नियम 50: फ्लोटिंग पॉइंट वेरिएबल का सटीक समानता या असमानता के लिए परीक्षण नहीं किया जाएगा।

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

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

अब इसको गाली दो!

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

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

स्कोरिंग

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

मतदाताओं को जवाब देने के लिए प्रोत्साहित किया जाता है कि खामियों को कितनी अच्छी तरह से छिपाया गया है, और डेवलपर्स को कितनी निराशा होती है।

नियमों और विनियमों

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

4
पायथन, रूबी, हास्केल, मेकफाइल, एक्सएमएल, आदि कुछ वास्तविक परियोजनाओं में उपयोग की जाने वाली कुछ भाषाएं हैं जिनमें सी जैसा सिंटैक्स नहीं है।
kennytm

7
यह प्रश्न ऑफ़-टॉपिक प्रतीत होता है क्योंकि यह प्रोग्रामिंग प्रतियोगिता नहीं है।
पीटर टेलर

5
@PeterTaylor: परिभाषा में "प्रोग्रामिंग पज़ल्स" शामिल हैं जिसका मतलब यह नहीं है कि उत्तर सॉफ़्टवेयर कोड का एक टुकड़ा होना चाहिए। साइट की परिभाषा में कहीं नहीं लिखा है कि यह केवल "प्रोग्रामिंग प्रतियोगिता" के बारे में है। परिभाषा है: "कोड गोल्फ / प्रोग्रामिंग पहेलियाँ / अन्य प्रोग्रामिंग प्रतियोगिता या चुनौतियां" "
18

7
@PeterTaylor यह मेरे लिए प्रोग्रामिंग के बारे में एक प्रतियोगिता की तरह दिखता है; पुलिस और लुटेरों ने लुटेरों को चुनौती दी कि वे या तो कोड न करें (और यदि आपका तर्क यह है कि लुटेरे टिप्पणी करते हैं, तो मेटा पोस्ट पर टिप्पणी करना सुनिश्चित करें जो पुलिस और लुटेरों को दो अलग-अलग सवालों को विभाजित करने का सुझाव देता है)
जॉन ड्वोरक

5
मैंने फिर से खोलने के लिए मतदान किया। ऐसा लगता है कि हमारे पास अभी भी कुछ सवाल हैं जहां हम इस बात पर सहमत नहीं हो सकते हैं कि वे विषय पर हैं या नहीं। यह मुझे उस कला से संबंधित याद दिलाता है जो बंद हो गई फिर दो बार फिर से खुल गई। मेरे पास इस प्रश्न के उत्तर के लिए एक विचार है और यह निश्चित रूप से संबंधित प्रोग्रामिंग है। यह सवाल साइट पर टैग के 2 फिट बैठता है।
hmatt1

जवाबों:


40

C / C ++

नियम 1: अष्टकोणीय स्थिरांक का उपयोग नहीं किया जाएगा

औचित्य: अष्ट स्थिरांक भ्रम का कारण हो सकता है। उदाहरण के लिए, लाइन पर एक आकस्मिक नज़र const int coefficients[] = {132, 521, 013, 102};
इस तथ्य को याद कर सकती है, कि सरणी में संख्याओं में से एक अष्टक में परिभाषित है।

यदि आप और भी अधिक दुष्ट होना चाहते हैं, तो निम्नलिखित जोड़ें:

नियम 2: हेक्साडेसिमल स्थिरांक केवल बिट हेरफेर के संदर्भ में उपयोग किया जाएगा।

Rationale: यदि कोई स्थिरांक एक संख्यात्मक मान का प्रतिनिधित्व करता है, तो यह दशमलव में होने पर अधिक पठनीय है। एक हेक्साडेसिमल निरंतर को इंगित करना चाहिए कि यह एक बिट मास्क का प्रतिनिधित्व करता है, न कि संख्यात्मक मूल्य का।

इसका दुरुपयोग कैसे किया जा सकता है:

निम्नलिखित सरल कार्यक्रम लें, जो किसी सरणी के पहले 10 तत्वों को जोड़ देगा। यह कोड मानक-अनुरूप नहीं होगा।

sum = 0;
for (i = 0; i < 10; i++) 
{
    sum += array[i];
}

ध्यान दें, 0अर्थात्, प्रति परिभाषा, एक अष्टक स्थिरांक। नियम 1 के अनुसार, कोड के माध्यम से इसे 0x00 के रूप में लिखना आवश्यक है, यह निराशाजनक है। नियम 2, और भी निराशाजनक।


1
क्या आप कोडिंग मानक परिभाषा से जोड़ सकते हैं जो कहती है कि 0यह एक अष्टक स्थिरांक है? मुझे लगता है कि यह इसलिए है क्योंकि यह चरित्र से शुरू होता है 0। यह आपके काल्पनिक पेडेंट के तर्क को मजबूत करेगा।
xnor


16

अजगर

नियम 1: सभी कोड को -OOध्वज का उपयोग करके बाइट-संकलित किया जाना चाहिए , जो कि बाइटकोड को अनुकूलित करता है। हम आकार और दक्षता के लिए अनुकूलित बायोटेक चाहते हैं!

नियम 2: टेस्ट को कोड के उसी "विरूपण साक्ष्य" के खिलाफ चलाया जाना चाहिए जिसे उत्पादन में डाल दिया जाएगा। हमारे ऑडिटरों को इसकी आवश्यकता है।

उपयोग बयानों -OOको हटाता assertहै। नियम 2 के साथ संयुक्त, यह प्रभावी रूप assertसे परीक्षणों में बयानों के उपयोग पर प्रतिबंध लगाता है । मज़े करो!


यह डॉकस्ट्रिंग्स को भी हटा देता है, जिसका अर्थ है कि आपको help()REPL में कुछ भी नहीं मिलता है , और अनौपचारिक REPL- परीक्षण अभी भी परीक्षण कर रहा है।
केविन

नहीं। यदि आप एक उचित परीक्षण ढांचा लिखते हैं, तो यह unittestया मॉड्यूल का उपयोग करेगा , जो __debug__ध्वज के आधार पर अपने स्वयं के सिद्धांतों को लागू करता है । हालांकि सिद्धांत चुपचाप नहीं चलेंगे। ख़ुशामदी!
पिपरी

15

यह Node.JS प्रोजेक्ट के लिए है।

धारा 3 - गति और दक्षता सार हैं

नियम 3.1: फ़ाइलों को अधिकतम 1kb तक रखा जाना चाहिए। इससे बड़ी फाइलें पार्स करने में बहुत लंबा समय लेती हैं।

नियम ३.२: ३ से अधिक स्तरों के घोंसले का कार्य न करें। V8 इंजन को कई चर का ट्रैक रखना चाहिए, और इस तरह से गहरी क्लोजर इसे कठिन बनाते हैं, सामान्य व्याख्या को धीमा करते हैं।

नियम 3.3:require() रनअराउंड से बचें ।

नियम 3.3.1: किसी भी मॉड्यूल को 3 से अधिक की गहराई तक require()नहीं होना चाहिए । स्मृति उपयोग और गति दोनों के संदर्भ में require()गहरी require()श्रृंखलाएं महंगी हैं।

नियम 3.3.2: कोर मॉड्यूल एक एकल के रूप में गिनती करते हैं require(), चाहे वे require()आंतरिक रूप से कितनी बार हो ।

नियम 3.3.3: बाहरी मॉड्यूल अधिकतम 2 require()एस के रूप में गिना जाता है । हम कोर मॉड्यूल के साथ समान लचीलापन नहीं दे सकते, लेकिन मान सकते हैं कि मॉड्यूल लेखक कुशल कोड लिख रहे हैं।

नियम 3.4: हर कीमत पर समकालिक कॉल से बचें। ये अक्सर एक लंबा समय लेते हैं, और पूरे इवेंट लूप को जारी रखने से रोकते हैं।

इसका दुरुपयोग कैसे किया जा सकता है:

नियम 3.1 और 3.3 एक साथ अच्छी तरह से काम नहीं करते हैं। require()श्रृंखला में अधिकतम 1kb और 3 s नीचे रखकर, वे सफल होने के लिए कड़ी मेहनत करेंगे।
नियम 3.2 और 3.4 लगभग असंगत हैं। 3.4 प्रतिबंध तुल्यकालिक कॉल; 3.2 कॉलबैक की संख्या को सीमित करके उन्नत अतुल्यकालिक काम को मुश्किल बनाता है।
नियम 3.4, सभी ईमानदारी में, एक नियम है जो वास्तविक के लिए पालन करना अच्छा है। 3.1, 3.2 और 3.3 पूरी तरह से फर्जी हैं।


11

जावास्क्रिप्ट (ECMAScript)

7.3.2: नियमित अभिव्यक्ति शाब्दिक

नियमित अभिव्यक्ति शाब्दिक का उपयोग नहीं किया जाना चाहिए। विशेष रूप से, स्रोत कोड में नीचे निर्दिष्ट RegularExpression nonterminal से मेल खाता कोई विकल्प नहीं होना चाहिए ।

RegularExpression     :: '/' RegularExpressionBody '/'
RegularExpressionBody :: [empty]
                         RegularExpressionBody [any-but-'/']

[खाली] खाली स्ट्रिंग से मेल खाता है और [किसी भी-लेकिन - '/'] '/' (स्लैश U+002F) वाले को छोड़कर किसी भी एकल-वर्ण स्ट्रिंग से मेल खाता है ।

दलील

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

हालाँकि, ऑर्गनाइजेशन ™ इस बात को मानता है कि नियमित अभिव्यक्ति कभी-कभार होती है इस काम के लिए सबसे अच्छा उपकरण। इसलिए, RegExpवस्तु स्वयं निषिद्ध नहीं है।

(व्याकरण का वाक्य-विन्यास स्वयं को स्पष्ट करता है [जिसे वह परिभाषित नहीं करता है] ECASAScript विनिर्देश के अनुरूप है। यह निश्चित रूप से काल्पनिक विनिर्देश के एक अन्य बिंदु पर अधिक कठोरता से परिभाषित किया जाएगा।)

चाल

निम्नलिखित कार्यक्रम गैर-अनुरूप है:

// sgn(x) is -1 if x < 0, +1 if x > 0, and 0 if x = 0.
function sgn(x) {
  return x > 0?  +1
       : x < 0?  -1
       :          0
}

ऊपर दिए गए RegularExpressionBody nonterminal के लिए प्रोडक्शंस स्पष्ट पुनरावर्तन पर भरोसा करके BNF में सूचियों को व्यक्त करने का एक सामान्य तरीका दिखाता है। यहाँ चाल यह है कि मैं "अकस्मात" खाली स्ट्रिंग को RegularExpressionBody के रूप में अनुमति देता हूं , जैसे कि स्ट्रिंग //को स्रोत कोड में निषिद्ध है। लेकिन वैसे भी सिंगल-लाइन टिप्पणियों की जरूरत किसे है? C89 और CSS केवल सही /* */टिप्पणी करने की अनुमति देते हुए सभी सही कर रहे हैं ।


15
यह वास्तव में उससे भी अधिक बुराई है: कोड में या तो ब्लॉक-कमेंट्स नहीं हो सकते हैं, और न ही प्रति फ़ाइल एक से अधिक डिवीजन ऑपरेटर।
क्रोमेटिक्स

अरे हाँ, तुम सही हो। मैंने ऐसा सोचा भी नहीं था। : पी
फायरफली

5

सी#

12.1 कार्यक्रम की स्थिति को प्रभावित करने वाले स्थैतिक तरीके निषिद्ध हैं

ऐसा इसलिए है क्योंकि स्थैतिक विधि के परिणामों का मज़बूती से परीक्षण करना कठिन है, विशेष रूप से एक जो कुछ स्थिति को बदलता है।

12.2 स्थैतिक विधियाँ नियतात्मक होनी चाहिए

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

क्यूं कर

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


4

जावा / वसंत

4.2 उत्पादन संहिता में परावर्तन का उपयोग

क्योंकि प्रतिबिंब का उपयोग हमारे स्रोत कोड के अन्यथा प्रतिबंधित भागों तक पहुंचने के लिए किया जा सकता है, उत्पादन कोड में प्रतिबिंब का उपयोग सख्त वर्जित है।

चाल

स्प्रिंग तकनीकी रूप से प्रतिबिंब का उपयोग करता है और उन वस्तुओं का प्रबंधन करता है जो इसका समर्थन करता है। इस नियम को लागू करने से, सभी स्प्रिंग उपयोगिता को हटाना होगा।


3

वेबसाइट एन्कोडिंग

666.13 UTF-8 का उपयोग नहीं किया जाना चाहिए और इसे UTF-7 राशन से बदला जाएगा
: UTF-7 UTF-8 की तुलना में अधिक कुशल है, खासकर जब हम अरबी देशों के उपयोगकर्ताओं को लक्षित करते हैं जो हम करते हैं।

इसका दुरुपयोग कैसे किया जा सकता है:

HTML5 विशेष रूप से UTF-7 को अस्वीकार करता है। इसका मतलब है, आधुनिक ब्राउज़र इसका समर्थन नहीं करेंगे। यदि सभी परीक्षण IE 11 जैसे ब्राउज़र पर किए जाते हैं, तो किसी को भी यह पता नहीं चलेगा जब तक कि बहुत देर न हो जाए।


2

जावास्क्रिप्ट बिटवाइज ऑपरेटर्स

1.9 जब तक वे अपने बिटकॉइन समकक्षों की तुलना में काफी तेज नहीं होते हैं तब तक आप गुणा या विभाजन या फर्श का उपयोग नहीं करेंगे। उन्हें क्रमशः बिटवेट ऑपरेटरों <<, >> और ~~ द्वारा प्रतिस्थापित किया जाएगा।
Rationale: बिटवाइज़ ऑपरेटर अधिक कुशल होते हैं।

इसका दुरुपयोग कैसे किया जा सकता है:

गुणा या विभाजन के बजाय << या >> का उपयोग बड़ी संख्या को संभालने में परेशानी का कारण होगा। इसके अलावा, वे ऑपरेशन पूर्वता और दशमलव बिंदुओं को अनदेखा करते हैं। जब आप इसे ऋणात्मक संख्या देते हैं तो डबल टिल्ड विभिन्न मान लौटाएगा।


2
मुझे लगता है कि यह पहले से ही स्पष्ट है कि x = (x<<10) + (x<<8) + (x<<5) + (x<<4) + (x<<3) + (x)हर तरह से हीन (संभवतः गति भी) है x *= 1337, और बिट्सफिट्स के साथ गैर-शक्ति दो द्वारा विभाजन की जगह भी बदतर है।
lirtosiast

@ थोमस केवा मैंने अपने उत्तर को उचित रूप से संपादित किया। इस बारे में बताने के लिए शुक्रिया। मैं बिटकॉइन ऑपरेटरों के लिए नया हूं।
स्टेफनोट

1

जावास्क्रिप्ट (ECMAScript)

7.3.1: पहचानकर्ता सम्मेलनों

पहचानकर्ता पर प्रतिबंध इस बात पर निर्भर करता है कि वह किस प्रकार का पहचानकर्ता है। पहचानकर्ताओं को परिवर्तनीय , लगातार , फ़ंक्शन और कंस्ट्रक्टर में विभाजित किया गया है ; 5.3 देखें। प्रतिबंध नीचे दिए गए हैं।

  • चर: पहला वर्ण एक निचला अक्षर वर्ण होना चाहिए। एक पहचानकर्ता के भीतर शब्दों को अलग करने के लिए कैमल-केस (1.3 देखें) का उपयोग किया जाना चाहिए।

  • लगातार: पहचानकर्ता को केवल बड़े अक्षर अक्षर और अंडरस्कोर ('_' U+005F) शामिल होना चाहिए । किसी पहचानकर्ता के भीतर शब्दों को अलग करने के लिए अंडरस्कोर का उपयोग किया जाना चाहिए।

  • फ़ंक्शन: फ़ंक्शंस को पहचानकर्ता प्रकार के समान नियमों का पालन करना चाहिए ।

  • कंस्ट्रक्टर: पहला वर्ण अपरकेस अक्षर होना चाहिए। एक पहचानकर्ता के भीतर शब्दों को अलग करने के लिए कैमल-केस (1.3 देखें) का उपयोग किया जाना चाहिए।

दलील

पठनीयता के लिए पठनीय पहचानकर्ता नाम बहुत महत्वपूर्ण हैं। पहचानकर्ताओं को जाने-माने सम्मेलनों में प्रतिबंधित करना भी विभिन्न कोड आधारों के बीच संक्रमण को आसान बनाता है। ये विशेष रूप से कन्वेंशन जावा ™ प्रोग्रामिंग भाषा [1] के लिए मानक सम्मेलनों के बाद तैयार किए गए हैं ।

चाल

मुझे jQuery की टीम को सूचित करने के लिए खेद है कि इस नाम सम्मेलन के साथ उनके "वैश्विक jQuery ऑब्जेक्ट" के लिए सबसे आम नाम है। सौभाग्य से, वे पहले से ही इस बारे में सोच चुके हैं $और jQueryएक ही वस्तु के संदर्भ में दोनों और वैश्विक नाम प्रदान करते हैं। मुझे लगता है कि userbase से स्विच करने के लिए उत्सुक नहीं हो सकता $हैjQuery हर जगह , हालांकि।


2
»कार्यों को पहचानकर्ता प्रकार के समान नियमों का पालन करना चाहिए ।« - क्या आपका मतलब है » चर प्रकार के रूप में «?
पाओलो एबरमन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.