Objektumorientált szoftvertervezés - 6. előadásAPI tervezési elvek
API
- API = Application Programming Interface → felhasznált programozási könyvtárak interfésze
- cél: más is jól tudja használni a modulunk
Jól megtervezett API tulajdonságai
- Könnyű megtanulni és memorizálni → átlátható, konzisztens
- Olvasható kódot eredményez
- Nehéz rosszul használni
- Könnyű kiterjeszteni
- Teljes: lefedi az összes felhasználói igényt
- Jól dokumentált
API fejlesztési folyamatok
- Gyűjtsük össze a követelményeket
- Írjunk use-case-eket
- Vegyünk példát hasonló API megoldásokról
- Definiáljuk az API-t
- Ellenőriztessük másokkal
- Írjunk sok-sok példát
- Készüljünk fel a kiterjesztésekre
- Implementáljuk
- Ha kételkedünk, hagyjuk ki
- Ne változtassunk rajta
API tervezési elvek
- Válasszunk magától értetődő neveket és szignatúrákat
- Válasszunk egyfajta nevet az összetartozó dolgokra
- Kerüljük a hamis konzisztenciát
- Kerüljük a rövidítéseket
- Általános nevek helyett használjunk specifikus neveket
- Használjuk a helyi terminológiát
- Ne legyünk az alattunk lévő API elnevezésének fogjai
- Válasszunk megfeleől alapértelmezett értékeket és működést
- Az API-t ne tegyük túlságosan okossá
- Gondoljunk az API tervezési döntéseinek teljesítménybeli következményeire
- Figyeljünk a szélső esetekre
- Minimalizáljuk a módosíthatóságot
- Vagy öröklésre tervezzünk, és dokumentáljuk is, vagy tiltsuk meg az öröklődést
- Legyünk óvatosak, ha virtuális API-t definiálunk
- Egy GUI-hoz készülő API tulajdonságokra épüljön
- Próbáljuk meg előre látni a testreszabhatósági lehetőségeket
- Kerüljük a hosszú paraméterlistákat
- Használjunk kényelmi függvényeket
- Induljunk el 3 sorból (inicializálás, alapvető konfiguráció, futtatás)
- A mágia rendben van, a számok azonban nem (nevesített konstansok támogatása)
- Jelezzük a hibát, amilyen hamar csak lehet
- Ne használjunk checked exception-öket
- A kivétel jelezze, hogyan lehet őt elkerülni
- Vigyázzunk a függvények túlterhelésével
- Teszteljük ki a belét is (teszteljünk mindent na)
- Dokumentuljuk az API-t