Arrière-plan:
Je suis dans une classe à mon université, appelé "Logiciel de Contraintes". Dans les premières conférences nous ont été d'apprendre à construire de bonnes Api.
Un bon exemple nous avons eu une très mauvaise fonction de l'API est le socket public static void Select(IList checkRead, IList checkWrite, IList checkError, int microseconds);
en C#. La fonction reçoit 3 listes de sockets, et détruit l'utilisateur ont pour cloner toutes les prises avant de les nourrir dans l' Select()
. Il dispose également d'un délai d'attente (en microsecondes) qui est un int, qui définit le temps maximum que le serveur peut attendre d'un socket. Les limites de ce qui est +/-35 minutes (parce que c'est un int).
Questions:
- Comment définissez-vous une API le "mauvais"?
- Comment définissez-vous une API de la "bonne"?
Points à considérer:
- Les noms de fonction qui sont difficiles à mémoriser.
- Les paramètres de la fonction qui sont difficiles à comprendre.
- Mauvaise documentation.
- Tout est tellement lié que si vous avez besoin de changer 1 ligne de code que vous aurez réellement besoin de changer des centaines de lignes dans d'autres endroits.
- Les fonctions qui détruisent leurs arguments.
- Mauvais évolutivité en raison de "caché" de la complexité.
- Il est nécessaire de l'utilisateur/dev construire des wrappers autour de l'API, de sorte qu'il peut être utilisé.