¿Cuáles son los factores clave detrás de la construcción de una API increíble?

Aquí hay una linda respuesta: basarla en una teoría subyacente sólida. Tener una buena semántica denotacional no solo te permite probar cosas, sino que también obliga a que tu diseño sea simple y hace que sea mucho más fácil pensar de manera informal .

A menudo, llega a un punto en el que ya no está diseñando una API, la API se está diseñando a sí misma. Comienzas con algunas abstracciones matemáticas realmente simples, y simplemente se unen. A menudo obtienes cosas como invariantes (leyes algebraicas) gratis solo de las estructuras que has creado; Estos son útiles para escribir programas correctos, así como cosas como optimizaciones.

Este tipo de diseño es la razón por la cual es útil aprender sobre cosas como la teoría de categorías y el álgebra universal. (Voy a conectar algo que escribí recientemente: http: //stackoverflow.com/questio….) Las abstracciones algebraicas como esta le brindan una base muy agradable para API y DSL simples y consistentes.

La idea central es que el uso de abstracciones matemáticas simples y generales conduce a API que son más simples, más fáciles de pensar y más consistentes. Después de todo, es mucho más fácil construir algo sobre un modelo ya simple y consistente que crear un buen diseño ad-hoc.

Un gran ejemplo de esto en acción es la biblioteca de lentes de datos para Haskell, que utiliza directamente estas ideas, incluidas las coalgebras (que se tratan en mi enlace anterior). Otro gran ejemplo es la programación funcional reactiva (FRP) con eventos y comportamientos defendidos por Conal Elliot.

No digo que esta sea la única forma de diseñar buenas API, pero espero que esto aclare una de las razones por las cuales estudiar ideas muy abstractas tiene sentido para CS.

Consulte Diseño semántico para obtener una introducción rápida al tema y Diseño denotacional con morfismos de clase de tipo para obtener más detalles.

Cómo diseñar una buena API y por qué es importante:
Una excelente charla en Google Tech Talks por Joshua Bloch, ex ingeniero de software de Google y autor de tecnología.

Es una conferencia de una hora de duración, y para los más impacientes no me atrevo a resumir lo que dijo el genio, así que aquí hay un enlace a la versión en línea en PDF de las diapositivas utilizadas:

Página sobre Tamu

La conferencia de Josh Bloch, mencionada por Udbhav Prasad, es genial.
Otro buen recurso es el de Apigee (compañía) Is Your API Naked?
Es un libro electrónico que describe las mejores prácticas para la construcción de API.

Debe ser simple (hace lo que hace y solo lo que tiene que hacer), limpio (la implementación encaja perfectamente en el marco / lenguaje / plataforma), fácil de usar (cuál es el punto si nadie quiere usarlo porque es para difícil de usar), consistente (una vez que la API está fuera … cambiarla romperá cosas).

Según mi experiencia, descubrí que al crear una API, siempre mire desde el punto de vista del consumidor. Esto mejora las API dramáticamente.