2009-12-29 12 views
16

Se me ha asignado la tarea de diseñar una lista de API para ser utilizada por una GUI que tengo que desarrollar, para poder comunicarme con una aplicación externa. Teniendo en cuenta que la aplicación simplemente ha sido diseñado y tengo el diagrama de clases inicial, debería:Creación de una API en Java por primera vez

1- Basta con enumerar los campos y métodos de este diagrama de clase de aplicación que será necesaria por la interfaz gráfica de usuario para comunicarse con la aplicación

o

2- crear una lista de campos completamente nuevos y los métodos necesarios por la interfaz gráfica de usuario para comunicarse con la aplicación que el desarrollador de aplicaciones debe crear

Gracias de antemano !!!

+0

¿Conoces MVC? – erenon

+0

¿Está escribiendo la GUI en Java, o la aplicación, o ambas? –

Respuesta

13

"Basta con enumerar los campos y métodos de este diagrama de clase de aplicación que será necesaria por la interfaz gráfica de usuario para comunicarse con la aplicación"

Esto funciona muy bien.

Después de hacer esto, intente escribir la documentación, con ejemplos detallados. Si su documentación es difícil de escribir, confusa o coja, entonces necesita arreglar la API para agregar características.

Luego muéstreselo a otras personas.

Si la gente está confundida o se queja, es posible que deba agregar características adicionales a la API.

Hasta que la gente no esté realmente confundida o se queje, no haga nada más que el mínimo.

+2

No creo que esté de acuerdo con hacer el mínimo, a menos que quiera convertirse en un robot que trabaje en una fábrica. Mi consejo es comenzar tratando de entender los casos de uso y los requisitos funcionales, si alguno ya está establecido. Luego piense en esto y trate de encontrar posibles errores o requisitos faltantes, y pregúnteles a las partes interesadas relevantes. Luego mire el diagrama de clases existente y aplique el mismo proceso de evaluación. También podría ser una buena idea verificar la fase del proyecto: ¿qué se requiere construir ahora mismo y qué se está haciendo en los siguientes hitos? –

+3

@Adriaan Koster: si tiene experiencia en la escritura de API, ese es un buen enfoque. Para su primer API, esa es una receta para la sobre-ingeniería y la creación de algo terriblemente complejo. Generalmente, el conjunto inicial de métodos y atributos incluye algunas características incómodas. Reparar eso es suficiente para comenzar. –

5

Haría que la API (semi) independiente de la implementación de la GUI, porque más tarde es posible que desee crear una interfaz diferente para la misma aplicación, o simplemente cambiar la GUI, y luego está atrapado con lo que sea que haya creado para el primer pase de su primera GUI.

Además, le recomiendo echarle un vistazo a Josh Bloch's talk about API design. Bloch es el tipo que diseñó la API de colecciones de Java.

7

Yo especificaría una interfaz . Esto desacopla la GUI y las aplicaciones.

La GUI solo usará la interfaz (excepto para una llamada a un método de fábrica que devuelva un objeto concreto) y la API implementará la interfaz. Al igual que ninguno de los nombres de clase de la aplicación es conocida por la GUI. Esto conduce a un diseño estable que es el más adecuado para la evolución futura.

Además, la interfaz sirve como una buena documentación de la API completa.

16

Una de las mejores guías para el diseño de la API que he leído es "The Little Manual of API Design" (PDF), que tiene algunas gran, la orientación de plataforma neutral en cuanto a cómo crear una API para una aplicación o servicio. Algunas de las orientaciones más importantes que ofrece son:

  • crear casos de uso antes de comenzar a codificar la API;
  • obtener una revisión por pares del diseño de API antes de codificarlo;
  • escribe ejemplos en contra de la API para probar su robustez.

El primer consejo es el mejor, en mi humilde opinión; le impide codificar una API que proporciona el mundo cuando todos sus casos de uso requieren una pequeña porción de ese mundo. También lo obliga a pensar cómo se usará, y tomar decisiones de diseño basadas en esos usos en lugar de hacerlo en abstracto.

+1

El enlace está muerto, utiliza este: https://people.mpi-inf.mpg.de/~jblanche/api-design.pdf – Random

Cuestiones relacionadas