Cosa c'è nelle grandi API che le rendono eccezionali? Penso che aderire al mantra "fai una cosa e fallo bene" sia un buon segno ed essere una buona mappatura sul dominio problematico è importante, ma cosa hanno in comune le grandi API?
Cosa c'è nelle grandi API che le rendono eccezionali? Penso che aderire al mantra "fai una cosa e fallo bene" sia un buon segno ed essere una buona mappatura sul dominio problematico è importante, ma cosa hanno in comune le grandi API?
Risposte:
Devi stare attento a evitare di aggiungere un nuovo vocabolario solo per il bene della tua API. Le mie API preferite mi spiegano le cose nel vocabolario che ho già capito. Lungo queste linee:
Devo già pensare a una mezza dozzina di strati di astrazione. Non farmi pensare a livelli extra. Non darmi troppe cose nuove da imparare che non aggiungeranno valore al mio obiettivo finale. Ad esempio, evita di usare la tua speciale classe di file che funziona in modo diverso dal tipo di file della lingua solo perché pensi che la tua strada sia migliore di quella generalmente accettata. Attenersi al modo generalmente accettato, almeno nelle interfacce, nel bene e nel male.
Ad esempio, non tentare di nascondere il fatto che la parte "modello" del framework MVC è un front-end per un database. Approfitta del famoso vocabolario che circonda i "database". So cosa sono le chiavi esterne. So cosa sono le righe e le colonne. Parlami in questi termini.
Simile a lavorare con idee concrete. Non nascondere il fatto che abbiamo a che fare con file o database o righe nei database. Conosco queste cose. Se ho a che fare con un container, come un elenco, ci sono buone probabilità che io abbia bisogno di conoscere la complessità algoritmica delle operazioni comuni. Puoi semplificare molto dicendo semplicemente che è un "elenco collegato" o un "array". Un'enorme serie di idee verrà improvvisamente messa in pratica per quello che stai facendo e all'improvviso avrà senso. Non creare il tuo set di idee che devo imparare quando arriverò già con un set ricco e utile di terminologia da applicare al problema.
Se sto usando la tua API per aprire un file di immagine di qualsiasi tipo, non dovrei pensare molto a pngs vs gifs vs jpgs. Lo farai per me. È la tua competenza principale, non la mia. Ho una vaga comprensione che tu abbia un po 'di magia per fare questo per me.
Un'API utile ha quanto segue:
X
è completamente diverso dalla convenzione impostata dal resto dell'API.Questa domanda è stata affrontata in "Practical API Design: Confessions of a Java Framework Architect" di Jaroslav Tulach del team NetBeans.