Progettare una buona API è un'arte. Una buona API è apprezzata anche dopo il passare del tempo. Secondo me, non ci dovrebbero essere pregiudizi generali sulla linea astratta-concreta. Alcuni parametri possono essere concreti come i giorni della settimana, alcuni richiedono di essere progettati per l'estensibilità (ed è abbastanza stupido renderli concreti, ad esempio, parte dei nomi delle funzioni), ma un altro può andare ancora oltre e per avere un aspetto elegante L'API uno deve fornire callback o persino un linguaggio specifico del dominio aiuterà a combattere la complessità.
Raramente accadono cose nuove sotto la Luna. Dai un'occhiata alla tecnica nota, in particolare standard e formati stabiliti (ad esempio, molte cose possono essere modellate dopo i feed, le descrizioni degli eventi sono state elaborate in ical / vcal). Rendi la tua API facilmente additiva, dove entità frequenti e onnipresenti sono concrete e le estensioni previste sono dizionari. Ci sono anche alcuni modelli ben consolidati per affrontare situazioni specifiche. Ad esempio, la gestione della richiesta HTTP (e simili) può essere modellata nell'API con oggetti Request e Response.
Prima di progettare l'API, fai un brainstorming su aspetti, compresi quelli, che non saranno inclusi, ma devi essere consapevole. Esempi di questo sono lingua, direzione della scrittura, codifica, impostazioni locali, informazioni sul fuso orario e simili. Presta attenzione ai luoghi in cui possono apparire i multipli: usa l'elenco, non un singolo valore per loro. Ad esempio, se stai progettando un'API per il sistema di videochat, la tua API sarà molto più utile, se supponi N partecipanti, non solo due (anche se le tue specifiche al momento sono tali).
A volte, essere astratti aiuta a ridurre drasticamente la complessità: anche se si progetta una calcolatrice per aggiungere solo 3 + 4, 2 + 2 e 7 + 6, può essere molto più semplice implementare X + Y (con limiti tecnicamente fattibili su X e Y e includi ADD (X, Y) nella tua API anziché ADD_3_4 (), ADD_2_2 (), ...
Tutto sommato, scegliere in un modo o nell'altro è solo un dettaglio tecnico. La documentazione deve descrivere i casi di uso frequente in modo concreto.
Qualunque cosa tu faccia dal lato della struttura dei dati, fornisci un campo per una versione dell'API.
Per riassumere, l'API dovrebbe ridurre al minimo la complessità quando si ha a che fare con il proprio software. PER apprezzare l'API, il livello di complessità esposta dovrebbe essere adeguato. La decisione sulla forma dell'API dipende molto dalla stabilità del dominio problematico. Pertanto, ci dovrebbe essere una stima su quale direzione cresceranno il software e la sua API, perché queste informazioni possono influenzare l'equazione per la complessità. Inoltre, desing API è lì per le persone a capire. Se ci sono buone tradizioni nell'area tecnologica del software in cui ti trovi, cerca di non discostarti molto da esse, poiché ti aiuterà a capire. Prendi in considerazione per chi scrivi. Gli utenti più avanzati apprezzeranno la generalità e la flessibilità, mentre quelli con meno esperienza potrebbero sentirsi più a proprio agio con i concreti. Tuttavia, prenditi cura della maggior parte degli utenti API lì,
Per quanto riguarda la letteratura, posso raccomandare ai programmatori leader di "Beautiful Code" di spiegare come pensano di Andy Oram, Greg Wilson, poiché penso che la bellezza sia percepire l'ottimalità nascosta (e l'idoneità per uno scopo).