Cuando comienzo un nuevo proyecto, muchas veces inmediatamente empiezo a pensar en los detalles de la implementación. "¿Dónde voy a poner el DataBaseHandler? ¿Cómo debería usarlo? ¿Deberían las clases que quieran usarlo extenderse de alguna superclase abstracta? ¿Debería usar una interfaz? ¿Qué nivel de abstracción voy a usar en mi clase que contiene métodos para enviar solicitudes y analizar datos? "
Termino estancado durante mucho tiempo porque quiero codificar la extensibilidad y la reutilización. Pero siento que es casi imposible dejar de pensar en cómo implementarlo perfectamente.
Y luego, si trato de decir "¡atorníllelo, hágalo!", Golpeo una pared de ladrillos muy rápido porque mi código no está organizado, mezclo niveles de abstracciones, etc.
¿Cuáles son algunas técnicas / métodos que tiene para iniciar un nuevo proyecto y al mismo tiempo configurar una estructura lógica / modular que se adapte bien?
- - EDITAR - -
Bueno, este es el tipo de pregunta a la que es difícil aceptar una respuesta, pero quería obtener más comentarios, ver si hay algún consenso. TDD suena realmente genial y, francamente, he tenido la intención de ponerme al día con el uso de JUnit, etc. Al mismo tiempo, ¿qué piensan los fanáticos de TDD sobre el hecho de que un punto legítimo en relación con TDD para resolver mi problemas particulares, es que TDD realmente no parece abordar la cuestión del diseño. Claro, estoy de acuerdo en que TDD me ayudará a definir lo que quiero hacer y luego gradualmente puedo trabajar sobre cómo, pero hay muchos patrones / estructuras de diseño generales diferentes que podrían pasar por las pruebas unitarias. Eso es todo: prueba UNIDADES individuales. Supongo que estoy un poco confundido ... No sé. Talvez yo'
¡Gracias!