2012-06-07 12 views
65

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

जब मैं किसी ऐसे व्यक्ति के रूप में एपीआई पढ़ता हूं जो दिन में 24 घंटे कोड में नहीं रहता है, तो मैं कुछ मूल रूप से देखना चाहता हूं और सबसे बुनियादी रूप में कोड में एक सरल उदाहरण देखना चाहता हूं। लेकिन अक्सर इसे पहली बार समझना आसान नहीं होता है।

यहां एक उदाहरण है। मैं फ़ोटोशॉप में जावास्क्रिप्ट द्वारा किसी आइटम का रंग बदलने का तरीका देख रहा हूं। तो मैं पीडीएफ खोजता हूं और "fillColor" ढूंढता हूं। मुझे यह दस्तावेज़ों में मिलता है:

fillPath 
([fillColor] 
[, mode] 
[, opacity] 
[, preserveTransparency] [, feather] 
[, wholePath] [, antiAlias]) 

जब मैं इसे पढ़ता हूं, तो पहली नज़र में इसका कोई मतलब नहीं होता है। ब्रैकेट क्यों हैं और मुझे कैसे पता चलेगा कि मुझे उन्हें कार्यान्वयन में उपयोग नहीं करना चाहिए? ब्रैकेट में कॉमा क्यों हैं? मुझे पता है कि कोड एक नमूना मैंने पाया है, जो इस है से तरह दिखना चाहिए:

myPath.fillPath(myNewColor) 

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

myPath.fillPath(mynewColor, { 
    mode: RGB, 
    opacity: .5 
}) 

ठीक है। मैं देखता हूं कि मैं निहित वैकल्पिक पैरामीटर छोड़ सकता हूं। ठीक। लेकिन फिर से, मैंने कभी एपीआई से अनुमान लगाया होगा।

तो, क्या वहां कुछ रहस्यमय दस्तावेज़ है जो लोगों को एपीआई दस्तावेज पढ़ने के बारे में बताता है? ऐसा क्यों लिखा जाता है? मुझे लगता है कि पहले ज्ञान क्या है? ऐसा क्यों है, और इसके बारे में सोचने से रोकने के लिए मैं क्या कर सकता हूं और इसे "प्राप्त" कर सकता हूं, इसलिए मैं अगली एपीआई को और अधिक खुशी से पढ़ और कार्यान्वित कर सकता हूं?

तो एपीआई दस्तावेज इस तरह से क्यों लिखा गया है कि बारहमासी न्यूब्स/हैकर्स/DIYers खुद को भ्रमित करने के लिए?

+4

क्या एपीआई संदर्भ दस्तावेज़ में कोई परिचय है जो उनके वाक्य रचनात्मक सम्मेलनों का वर्णन करता है? –

+21

उस व्यक्ति के लिए जिसने मतदान करने के लिए मतदान किया था: मेरा मानना ​​है कि इस प्रश्न में योग्यता है, और अगर मैं कर सकता हूं तो "बंद न करें"। यह एक प्रश्न नहीं है जिसे मैंने पहले देखा है (या सुना है), यह एक वैध प्रोग्रामिंग से संबंधित समस्या को संबोधित करता है, और जब मैं प्रोग्रामिंग से संबंधित चीजों को सिखाता हूं तो मुझे व्यक्तिगत रूप से उत्तर उपयोगी लगता है। –

+4

डेरेक: मुझे लगता है कि आप मूल पोस्ट में बोल्ड वाक्यों में से एक चूक गए हैं। यदि आप "एपीआई दस्तावेज को कैसे पढ़ा जाए" पर Google हैं, तो पहले 10 परिणामों में जानकारी "अमूर्त", "अपूर्ण", "भ्रमित" जैसी चीजें कहती है, इस प्रकार मेरे प्रश्न के बिंदु को मजबूत करती है। – dbonneville

उत्तर

62

तो एपीआई प्रलेखन इस तरह से क्यों लिखा गया है कि बारहमासी न्यूब्स/हैकर्स/DIYers खुद को भ्रमित करने के लिए?

यह वास्तव में इस तरह से लिखा जाने वाला नहीं है।मैं सहमत हूं कि एपीआई दस्तावेजों में उपयोग की कोई आसानी नहीं है। हालांकि, पुराने एपीआई/नेमस्पेस सम्मेलनों में पुरानी man शैली वाक्यविन्यास सम्मेलनों से बहुत अधिक क्रॉस है।

आम तौर पर, एपीआई के साथ काम करने वाले व्यक्ति का प्रकार, विकास में या कम से कम 'पावर उपयोगकर्ता' में कुछ पृष्ठभूमि होगी। इस प्रकार के उपयोगकर्ताओं को इस तरह के वाक्यविन्यास सम्मेलनों में उपयोग किया जाता है और यह नए दस्तावेज़ बनाने की कोशिश करने के बजाय एपीआई दस्तावेज़ का पालन करने के लिए अधिक समझ में आता है।

क्या वहां कुछ रहस्यमय दस्तावेज़ है जो लोगों को एपीआई दस्तावेज पढ़ने के बारे में बताता है?

वास्तव में कहीं भी मानक नहीं है, या आरएफसी, supersekretsyntaxdoc कहीं भी बिछा रहा है, हालांकि यूनिक्स man page synposis format के लिए ~ 30 वर्ष पुरानी फ़ाइल है जो व्यापक रूप से उपयोग है।

इस (और अपने सवाल का जवाब देने) के कुछ उदाहरण होगा:

रेखांकित शब्द माना जाता शाब्दिक हैं, और लिखे जाते हैं बस के रूप में वे दिखाई देते हैं।

स्क्वायर ब्रैकेट्स ([]) एक तर्क के आसपास इंगित करता है कि तर्क वैकल्पिक है।

एलिप्स ... का उपयोग यह दिखाने के लिए किया जाता है कि पिछले तर्क-प्रोटोटाइप को दोहराया जा सकता है।

एक ऋण चिह्न से शुरू होने वाला एक तर्क अक्सर किसी प्रकार के ध्वज तर्क के लिए लिया जाता है, भले ही यह उस स्थिति में दिखाई देता है जहां फ़ाइल नाम दिखाई दे सकता है।

लगभग सभी प्रोग्रामिंग संबंधित दस्तावेज़ एडोब एपीआई से अपने उदाहरण का विश्लेषण करना Python, man pages, जावास्क्रिप्ट libs (Highcharts), आदि


से वाक्य रचना सम्मेलन के इस प्रकार का उपयोग करता है,

fillPath 
([fillColor] 
[, mode] 
[, opacity] 
[, preserveTransparency] [, feather] 
[, wholePath] [, antiAlias]) 

हम देखते हैं कि fillPath() (एक फ़ंक्शन) वैकल्पिक तर्क fillColor, mode, opacity, preserveTransparency, feathe, wholePath या antiAlias लेता है। fillPath() पर कॉल करके, आप उन पैरामीटरों में से किसी के भी, कहीं से भी गुजर सकते हैं। वैकल्पिक [] के भीतर अल्पविराम का अर्थ यह है कि यदि इस पैरामीटर का उपयोग दूसरों के अतिरिक्त किया जाता है, तो आपको इसे अलग करने के लिए अल्पविराम की आवश्यकता होती है। (कभी-कभी सामान्य ज्ञान, निश्चित रूप से, लेकिन कभी-कभी वीबी जैसी कुछ भाषाएं, स्पष्ट रूप से उन अल्पविरामों की आवश्यकता होती है जो उचित रूप से चित्रित करती हैं कि कौन सा पैरामीटर गुम है!)। चूंकि आपने प्रलेखन से लिंक नहीं किया है (और मुझे इसे Adobe's scripting page पर नहीं मिल रहा है) वास्तव में यह जानने का कोई तरीका नहीं है कि एडोब एपीआई किस प्रारूप की अपेक्षा कर रहा है। हालांकि, के शीर्ष पर एक स्पष्टीकरण होना चाहिए जिसमें दस्तावेज शामिल हैं जो सम्मेलनों को समझाते हैं।

तो, यह समारोह शायद इस्तेमाल किया जा सकता कई मायनों:

fillPath() //Nothing passed 
fillPath(#000000,RGB) // Black, in RGB mode 
fillPath(#000000,RGB,50) // Black, in RGB mode, half opacity 

//Now it gets tricky, this might ALSO be acceptable: 
fillPath(#000000,50) // Black, no mode, half opacity 

//OR 
fillPath(#000000,,50) // Black, no mode, half opacity 

फिर, वहां आमतौर पर एपीआई/प्रोग्रामिंग से संबंधित सभी दस्तावेजों भर में कुछ मानक हैं। हालांकि प्रत्येक डॉक्टर में सूक्ष्म मतभेद हो सकते हैं। एक पावर उपयोगकर्ता या डेवलपर के रूप में, आप उन दस्तावेजों/ढांचे/पुस्तकालयों को पढ़ने और समझने में सक्षम होने की उम्मीद कर रहे हैं जिन्हें आप उपयोग करने का प्रयास कर रहे हैं।

+1

यूनिक्स मैन पेज सारांश सारांश लिंक मर चुका है - किसी के पास प्रतिस्थापन लिंक है? @ पेंगुइनकोडर अपडेट: [http://unix.stackexchange.com/questions/17833/understand-synopsis-in-manpage] (यूनिक्स स्टैक एक्सचेंज), पर आधारित यह [https: //en.wikipedia पर आधारित है। संगठन/विकी/विस्तारित_Backus% ई 2% 80% 93Naur_Form ( ईबीएनएफ) – steviejay

3

ब्रैकेट का मतलब है कि संपत्ति वैकल्पिक है।

fillPath() //good 
fillPath (someFillColor) //good 
fillPath (someFillColor, mode) //good 
fillPath (undefined, mode) //good 
fillPath (mode) //bad 
fillPath (undefined) //really bad 

लोइक गतिशील के लिए http://www.loicaigon.com

+2

'fillPath (मोड) 'ठीक हो सकता है। यदि एक वैकल्पिक तर्क गैर-वैकल्पिक से पहले आता है तो इसका अर्थ यह है कि यह कार्य यह पता लगाने के लिए पर्याप्त स्मार्ट है कि वैकल्पिक तर्क दिया गया था या नहीं (उदाहरण के लिए इसके प्रकार को देखकर) – ThiefMaster

+1

एमएमएम अच्छी तरह से संभव है लेकिन मैं कुछ पर भरोसा करना पसंद करता हूं स्क्रिप्ट मेरे लिए कुछ कर सकती है: डी –

5

एपीआई डॉक्स: आप वां रैंक पर Soem गुण सेट करना चाहते हैं, तो आप या तो eading एक के लिए गुण की घोषणा या उन्हें घोषित करने के लिए अपरिभाषित के रूप में है कि हालांकि ध्यान रखें टाइप की गई भाषाएं बहुत सार्थक नहीं हो सकती हैं अगर ध्यान से लिखी नहीं जाती है, इसलिए इसके बारे में बहुत बुरा मत समझें, यहां तक ​​कि सबसे अनुभवी डेवलपर को उन्हें समझने की कोशिश करने में कठिन समय हो सकता है।

ब्रैकेट्स के बारे में और ऐसे में, आमतौर पर एक कोड सम्मेलन अनुभाग होता है जिसे शाब्दिक उदाहरणों के बाहर सटीक उपयोग की व्याख्या करनी चाहिए; हालांकि EBNF, Regex और Railroad Diagrams लगभग सर्वव्यापी हैं, इसलिए आपको अधिकतर टिप्पणियों को समझने के लिए उनसे परिचित होना चाहिए।

1

मेरे पास कुछ ही समय पहले यही प्रश्न था और किसी ने मुझे Extended Backus–Naur Form पर इंगित किया।

यह समझ में आता है क्योंकि संभावित रूप से असीमित परिणामों को बनाने के लिए प्रोग्रामिंग का उपयोग किया जा सकता है। दस्तावेज हर संभावित मामले के लिए एक उदाहरण प्रदर्शित नहीं कर सकता है। सामान्य उपयोग का एक अच्छा उदाहरण मैं सहायक हूं लेकिन एक बार जब आप अंतर्निहित वाक्यविन्यास पढ़ सकते हैं तो आप अपना कोड बना सकते हैं।