InterfazMinimalista
Escrito por Martin Fowler
Traducido por Jorge Ferrer
Revisado por Carmen Vidal
Una interfaz minimalista es un estilo de diseño de APIs que uso comocontraste de una InterfazHumanizada. La idea detrás de un interfaz mínimalista es diseñar una API que permita al cliente hacer todo lo que necesita, pero reduce las capacidades al menor conjunto posible de métodos que permiten hacer el trabajo. (Ver InterfazHumanizada para consultar un buen ejemplo de sus diferencias)
Los argumentos a favor de la InterfazHumanizada se describen en ese artículo, aquí se se presenta una exposición racional de la interfaz
minimalista.
Aprender una interfaz lleva un tiempo. Probablemente una clase con una
interfaz enorme no será usada correctamente y puede resultar molesta
en primer término. Manteniendo un conjunto pequeño y centrado de
métodos consigues que sea más fácil para los clientes encontrar que
representa la clase y qué puede hacer.
El objetivo también es importante para el diseñador de la clase. Un
problema habitual en el diseño de clases es desarrollar clases que
hacen demasiado. Centrarse en lo esencial ayuda a mantener la basura
fuera de la clase, permitiéndola centrarse en hacer un único trabajo y
hacerlo bien.
Si sigues una aproximación humanizada, ¿cómo puedes saber donde parar?
Si sigues añadiendo métodos porque alguien los puede querer, la lista de
métodos no tendrá fin. Así que necesitas unas guías para evitar esta
explosión de métodos. La guía de las interfaces humanizadas
(suponiendo que sea útil) es arbitraria y difícil. La minimalista es
sencilla - si el cliente tiene suficiente con los métodos existentes,
entonces no necesitan uno adicional.
(Ten en cuenta que la búsqueda de lo realmente necesario es más
complicada cuando se escriben librerías de clases públicas de lo que
lo es cuando se escribe código para una aplicación. En el código de
aplicación los usos son conocidos - es un sistema cerrado).
Si usas interfaces con tipado estático puro (por ejemplo usando la
palabra reservada 'interface' en Java y C#), otra razón para mantener
el número de métodos pequeño es que reduce el coste para los
implementadores. Un número grande de métodos, si todos tienen que
implementarse, puede ser mucho trabajo . (Usando una clase abstracta a
modo de 'mixin' puede ayudar a reducir dicha carga).
Artículo Original

