El YAGNI "principio" establece que no debe centrarse en proporcionar funcionalidad antes de lo necesario ya que "no lo va a necesitar" de todos modos.¿Cuándo violar YAGNI?
Suelo tender a usar el sentido común por encima de cualquier regla, no importa pero algunas veces siento que es útil diseñar en exceso o probar algo en el futuro si tiene buenas razones, incluso si es posible que nunca lo haga usarlo
El caso real que tengo en mis manos en este momento es más o menos así:
Tengo una aplicación que tiene que correr a través de una sencilla protocolo de comunicación propietaria (nivel OSI 4). Este protocolo tiene un conjunto de características deseables (como la siguiente especificación NORM) que proporcionan robustez a la aplicación pero que no son estrictamente necesarias (la multidifusión UDP podría funcionar aceptablemente).
También existe el hecho de que la aplicación probablemente (pero no seguramente) sea utilizada por otros clientes en el futuro que no tendrán acceso a la solución propietaria y, por lo tanto, necesitarán otra solución. Sé de hecho que la probabilidad de que otro cliente para la aplicación sea alto.
Entonces, ¿qué piensas? ¿Debo simplemente diseñar para el protocolo patentado y dejar la refactorización, la extracción de la interfaz y demás para cuando realmente lo necesite o debería diseñar ahora pensando en el futuro (no tan lejano)?
Nota: Para que quede claro, estoy interesado en escuchar todo tipo de opiniones a la pregunta general (cuando se viola a YAGNI), pero realmente me gustaría algún consejo o pensamientos en mi dilema actual :)
Esto se pregunta más apropiadamente en http://programmers.stackexchange.com hoy en día ... –
Imagine los sistemas de datación de COBOL que usan solo 2 dígitos para el año. Esa sería una buena área para violar YAGNI :) –