अच्छा एपीआई डिजाइन करना एक कला है। समय बीतने के बाद भी अच्छे एपीआई की सराहना की जाती है। मेरी राय में, अमूर्त-कंक्रीट लाइन पर कोई सामान्य पूर्वाग्रह नहीं होना चाहिए। कुछ मापदंडों को सप्ताह के दिनों के रूप में कंक्रीट किया जा सकता है, कुछ को एक्स्टेंसिबिलिटी के लिए डिज़ाइन करने की आवश्यकता होती है (और यह उन्हें ठोस बनाने के लिए काफी बेवकूफ है, जैसे, फ़ंक्शन नामों का हिस्सा), फिर भी एक और आगे भी जा सकता है और सुरुचिपूर्ण होने के लिए एपीआई को कॉलबैक या यहां तक कि डोमेन विशिष्ट भाषा प्रदान करने की आवश्यकता है जो जटिलता से लड़ने में मदद करेगी।
चंद्रमा के नीचे शायद ही कभी नई चीजें होती हैं। पूर्व कला, विशेष रूप से स्थापित मानकों और स्वरूपों पर एक नज़र डालें (उदाहरण के लिए, फ़ीड्स के बाद कई चीजों को मॉडल किया जा सकता है, घटना विवरण ical / vcal में विस्तृत थे)। अपने एपीआई को आसानी से जोड़ दें, जहां लगातार और सर्वव्यापी संस्थाएं ठोस हैं और कल्पना विस्तार शब्दकोष हैं। विशिष्ट स्थितियों से निपटने के लिए कुछ अच्छी तरह से स्थापित पैटर्न भी हैं। उदाहरण के लिए, HTTP रिक्वेस्ट (और समान) को हैंडल और रिस्पॉन्स ऑब्जेक्ट के साथ एपीआई में मॉडल किया जा सकता है।
एपीआई को डिजाइन करने से पहले, उन पहलुओं पर विचार मंथन, जिनमें शामिल नहीं हैं, लेकिन आपको इसके बारे में पता होना चाहिए। इस तरह के उदाहरण हैं भाषा, लेखन की दिशा, एन्कोडिंग, लोकेल, टाइमज़ोन जानकारी और पसंद। उन स्थानों पर ध्यान दें, जहां गुणक प्रकट हो सकते हैं: सूची का उपयोग करें, उनके लिए एकल मूल्य नहीं। उदाहरण के लिए, यदि आप वीडियोकोच सिस्टम के लिए एपीआई के इच्छुक हैं, तो आपका एपीआई अधिक उपयोगी होगा, यदि आप एन प्रतिभागियों को मानते हैं, तो सिर्फ दो (भले ही आपके चश्मा इस तरह के हों)।
कभी-कभी, अमूर्त होने से जटिलता को कम करने में मदद मिलती है: भले ही आप केवल 3 + 4, 2 + 2, और 7 + 6 को जोड़ने के लिए एक कैलकुलेटर डिज़ाइन करते हैं, एक्स + वाई को लागू करने के लिए एक्स और वाई के साथ तकनीकी रूप से व्यवहारिक सीमाएं बहुत सरल हो सकती हैं। Y, और ADD_3_4 (), ADD_2_2 (), ... के बजाय अपने API में ADD (X, Y) शामिल करें ...
सभी के सभी, एक तरह से या किसी अन्य को चुनना एक तकनीकी विवरण है। आपके दस्तावेज़ को लगातार उपयोग के मामलों का ठोस तरीके से वर्णन करना चाहिए।
आप डेटा संरचना पक्ष पर जो कुछ भी करते हैं, वह एपीआई संस्करण के लिए एक क्षेत्र प्रदान करता है।
संक्षेप में, आपके सॉफ़्टवेयर से निपटने के दौरान एपीआई को जटिलता को कम करना चाहिए। एपीआई की सराहना करने के लिए, उजागर जटिलता का स्तर पर्याप्त होना चाहिए। एपीआई के रूप में निर्णय लेना समस्या डोमेन की स्थिरता पर बहुत निर्भर करता है। इस प्रकार, कुछ अनुमान होना चाहिए कि सॉफ्टवेयर किस दिशा में है और यह एपीआई बढ़ेगा, क्योंकि यह जानकारी जटिलता के लिए समीकरण को प्रभावित कर सकती है। इसके अलावा, लोगों को समझने के लिए एपीआई desing है। यदि आप जिस सॉफ्टवेयर टेक्नोलॉजी क्षेत्र में हैं, वहां कोई भी अच्छी परंपरा है, तो कोशिश करें कि आप उनसे ज्यादा विचलित न हों, क्योंकि इससे समझने में मदद मिलेगी। आप किसके लिए लिखते हैं, इसका ध्यान रखें। अधिक उन्नत उपयोगकर्ता सामान्यता और लचीलेपन की सराहना करेंगे, जबकि कम अनुभव वाले लोग कंसर्ट के साथ अधिक सहज हो सकते हैं। हालाँकि, अधिकांश एपीआई उपयोगकर्ताओं के लिए देखभाल,
साहित्य की ओर से मैं "ब्यूटीफुल कोड" की सिफारिश कर सकता हूं। प्रोग्रामर बताते हैं कि वे एंडी ओरम, ग्रेग विल्सन द्वारा कैसे सोचते हैं, क्योंकि मुझे लगता है कि सुंदरता छिपी हुई इष्टतमता (और किसी उद्देश्य के लिए उपयुक्तता) के बारे में है।