" El patrón de interfaz constante es un mal uso de las interfaces "
Quien elaboró esta hipótesis, por muy gurú que sea, la inventó sobre la base de la necesidad de seguir implementando los malos hábitos y prácticas de manera eficiente. La hipótesis se basa en la promoción de la validez de malos hábitos de diseño de software.
Escribí una respuesta para refutar esa hipótesis aquí: ¿Cuál es la mejor manera de implementar constantes en Java? explicando la falta de fundamento de esta hipótesis.
Durante 10 años esa pregunta había permanecido abierta, hasta que se cerró dentro de 2 horas después de que publiqué mis razones desjustificando esta hipótesis, exponiendo así la DESQUERIDA para el debate de aquellos que se aferran a esta hipótesis equivocada.
Estos son los puntos que expresé contra la hipótesis.
La base para sostener esta hipótesis es la necesidad de métodos y reglas RESTRICTIVAS para hacer frente a los efectos de los malos hábitos y metodologías de software.
Los defensores del sentimiento " El patrón de interfaz constante es un mal uso de las interfaces" no pueden proporcionar otras razones que las causadas por la necesidad de hacer frente a los efectos de esos malos hábitos y prácticas.
Resuelve el problema fundamental.
Y luego, ¿por qué no hacer un uso completo y explotar todas las características del lenguaje de la estructura del lenguaje Java para su propia conveniencia? No se requieren chaquetas. ¿Por qué inventar reglas para bloquear su estilo de vida ineficaz para discriminar e incriminar estilos de vida más efectivos?
El tema fundamental
es la organización de la información. La información que media el proceso y el comportamiento de esa información deben entenderse primero, junto con las llamadas reglas de negocio, antes de diseñar o complementar soluciones al proceso. Este método de organización de la información se denominó normalización de datos hace algunas décadas.
Entonces, solo la ingeniería de una solución será posible porque alinear la granularidad y modularidad de los componentes de una solución con la granularidad y modularidad de los componentes de la información es la estrategia óptima.
Hay dos o tres obstáculos importantes para organizar la información.
La falta de percepción de la necesidad de "normalización" del modelo de datos.
Las declaraciones de EF Codd sobre la normalización de datos son erróneas, defectuosas y ambiguas.
La última moda que se disfraza de ingeniería ágil es la noción equivocada de que no se debe planificar y condicionar la organización de los módulos con anticipación porque se puede refactorizar sobre la marcha. La refactorización y el cambio continuo sin verse obstaculizados por futuros descubrimientos se utilizan como excusa. Los descubrimientos esenciales del comportamiento de la información del proceso es entonces, mediante el uso de trucos contables para retrasar las ganancias y la puesta en activo, por lo que el conocimiento esencial y su tratamiento no se considera necesario ahora.
El uso de constantes de interfaz es una buena práctica.
No invente reglas ni emita ninguna fatwa en su contra solo porque ama sus hábitos de programación ad-hoc.
No prohíba la posesión de armas por el motivo de que hay personas que no saben cómo manejarlas o que son propensas a abusar de ellas.
Si las reglas que inventa están destinadas a principiantes de programación que no pueden codificar profesionalmente y que usted se cuenta entre ellos, dígalo, no declare su fatwa como aplicable a modelos de datos normalizados correctamente.
Un razonamiento tonto - ¿Los problemas del lenguaje Java no pretendían que las interfaces se usaran de esa manera?
No me importa cuáles fueron las intenciones originales de los padres fundadores para la Constitución de Estados Unidos. No me importan las intenciones no codificadas no escritas. Solo me importa lo que está codificado literariamente en la Constitución escrita y cómo puedo explotarlos para el funcionamiento efectivo de la sociedad.
Solo me importa lo que me permitan las especificaciones del lenguaje / plataforma Java y tengo la intención de explotarlas al máximo para proporcionarme un medio para expresar mis soluciones de software de manera eficiente y efectiva. No se requieren chaquetas.
El uso de las constantes Enum es realmente una práctica horrible.
Requiere escribir código adicional para asignar el parámetro al valor. El hecho de que los fundadores de Java no proporcionaran la asignación de valores de parámetros sin que usted escribiera ese código de asignación demuestra que las constantes de Enum son un uso no intencionado del lenguaje Java.
Sobre todo porque no se le anima a normalizar y componenteizar sus parámetros, habría una falsa impresión de que los parámetros mezclados en una bolsa Enum pertenecen a la misma dimensión.
Las constantes son contrato API
No olvides eso. Si diseñó y normalizó su modelo de datos, y estos incluyen constantes, esas constantes son contratos. Si no normalizó su modelo de datos, entonces debe ajustarse a las fatwas dadas sobre cómo practicar la codificación restrictiva para hacer frente a ese mal hábito.
Por lo tanto, las interfaces son una forma perfecta de implementar el contrato de Constants.
Una presunción extraña: ¿qué pasa si la interfaz se implementa inadvertidamente?
Sip. Cualquiera podría implementar inadvertidamente cualquier interfaz sin darse cuenta. Nada se interpondrá en el camino de estos programadores inadvertidos.
Diseñe y normalice su modelo de datos contra fugas
No coloque decretos restrictivos para proteger las presuntas malas prácticas que causan la filtración de parámetros no contratados / perdidos en la API. Resuelva el problema fundamental, en lugar de culpar a las constantes de interfaz.
No usar un IDE es una mala práctica
Un programador EFECTIVO y de funcionamiento normal no está allí para demostrar cuánto tiempo puede permanecer bajo el agua, qué tan lejos podría caminar en un calor abrasador o tormentas eléctricas húmedas. Ella debe usar una herramienta eficiente como un automóvil o autobús o al menos una bicicleta para llevar sus 10 millas al trabajo todos los días.
No imponga restricciones a los compañeros programadores solo porque tiene una obsesión de ascetismo esotérico con la programación sin IDE.
Un par de marcos están diseñados para ayudar a los programadores a seguir practicando malos hábitos de manera eficiente.
OSGI es un marco de este tipo. Y también lo es el decreto contra las Constantes de Interfaz.
Por tanto, la respuesta concluyente ...
Las constantes de interfaz son una forma eficaz y eficiente de colocar en el contrato componentes bien diseñados y normalizados de un modelo de datos.
Las constantes de interfaz en una interfaz privada con el nombre apropiado anidada en un archivo de clase también son una buena práctica para agrupar todas sus constantes privadas en lugar de dispersarlas por todo el archivo.