Hay un enfoque muy simple y práctico para esto, que funciona para una amplia gama de proyectos pequeños y medianos. Aunque probablemente no funcionará bien para los Exploradores de Marte.
Primero, calcule lo que desea que haga el sistema y anote cada una de las características individuales. Esto puede ser tan sofisticado como un guión gráfico de usuario completo o tan simple como unos pocos puntos anotados en una hoja de papel frente a usted. Pero es importante que sepa lo que quiere que haga.
En base a eso, elabora la estructura general del sistema. Nuevamente, esto a menudo es solo un dibujo rápido de las diferentes clases / módulos y cómo se relacionan entre sí, pero puede ser tan complejo como un documento completo. Lo importante es que tenga una idea de cómo va a implementar el sistema. Pero, esto probablemente se refinará a medida que trabaje en él, así que no intente ir a lo complejo y detallado.
De todas estas características, descubra cuáles son las cosas clave que el programa debe hacer: las características principales.
Luego impleméntelos uno por uno. Ahora, la clave aquí es asegurarse de que una vez que haya implementado una característica, esto se haga y funcione completamente; idealmente, esto va acompañado de una prueba unitaria que se asegura de que siga funcionando. Por lo general, asumo que estaré tan ocupado que nunca tendré tiempo de volver a la función y solucionarlo.
Una vez que se implementan las funciones principales, generalmente trato de usar el sistema lo más cerca posible del entorno de producción. Esto le proporciona a) cualquier error que haya pasado por alto anteriormente yb) tenga una buena idea de la prioridad de las siguientes funciones.
Luego puede seguir implementando las características restantes según sea necesario.
Código de calidad versus características
Con lo anterior en mente, tiendo a sacrificar las características por la calidad del código, si tengo que cumplir un plazo. Simplemente porque, al menos en mi línea de trabajo, cuando termino algo, mi gerencia asume que está hecho. Y que me pueden dar la próxima tarea. No tengo mucho tiempo para mejorar el código después del hecho.
Ahora, ¿qué pasa con el manejo de excepciones?
Si no desea implementarlo de inmediato, puede enumerarlo como otra característica de la lista. Y cuando llegues a eso, puedes implementar eso. Pero lo más probable en su caso es que probablemente haya muchas otras cosas que son más importantes primero.
Sin embargo, hay un requisito mínimo para las excepciones: asegúrese de que se notifique al usuario si algo sale mal, sin importar cuán feo pueda ser el resultado. No tragues excepciones en alguna parte.