Este es un proyecto cancelado que no recibe actualizaciones. No obstante, puedes acceder a su archivo como referencia.

Versión Cero

Diseño de API

Martin Fowler está escribiendo últimamente sobre el diseño de API’s y cómo las librerías estándard de diferentes lenguajes afrontan la tarea de diseño de sus respectivas API.

Por un lado tenemos el Interface Mínimo. Con este sistema, los diseñadores de las librerías buscan el mínimo grupo de métodos que permite acceder a toda la funcionalidad de las clases y dejan en manos de los clientes de las API (desarrolladores) la composición de estos métodos para obtener funcionalidades más ricas.

Un ejemplo de esto es el interface List de Java, que no dispone de un método para acceder al último elemento de la colección, debiendo llamarse al método genérico get pasándole la posición del último elemento:

aList.get(aList.size -1)

Frente a esto tenemos el Interface Humano que aboga por ponerse en la piel del desarrollador y darle ya implementados los métodos que posiblemente utilizará. Por ejemplo el Array de Ruby tiene un método last:

anArray.last

¿Cual es la mejor forma de diseñar un API? Desde un punto de vista del desarrollador parece claro que lo ideal es el Interface Humano. Ya te da el trabajo hecho. Pero creo que al diseñar para el caso frecuente se corre el peligro de que solo se facilite al desarrollador este uso, dificultándole incluso el que el se pueda componer sus propios funcionalidades si se han olvidado de incluir los ladrillos básicos de funcionalidad necesarios.

Comentarios
Acerca - Contacto - Información legal y técnica - Condiciones de uso - Noticias sobre el mundo del Desarrollo de Software.