Hay un enfoque muy simple y práctico para esto, que funciona para una amplia gama de proyectos de tamaño pequeño a mediano. Aunque probablemente no funcionará bien para Mars Explorers.
Primero, averigüe qué desea que haga el sistema y anote cada una de las características individuales. Esto puede ser tan sofisticado como un tablero de historias de usuario completo o tan simple como unas pocas viñetas anotadas en un papel frente a usted. Pero es importante que sepa qué quiere que haga.
En base a eso se traza la estructura general del sistema. Nuevamente, esto es muy a menudo 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 tiene algún tipo de idea de cómo que va a implementar el sistema. Sin embargo, es probable que esto se refine a medida que trabaja en él, así que no intente ir a lo complejo y detallado.
De todas estas características se resuelven cuáles son las cosas clave que debe hacer el programa: las funciones principales.
Luego implementa uno por uno. Ahora, la clave aquí es que, en realidad, para asegurarse de que una vez que implementó una función, esto se hace y funciona completamente; idealmente, esto se acompaña de una prueba de unidad que se asegura de que siga funcionando. Normalmente supongo que estaré tan ocupado que nunca tendré tiempo para volver a la función y arreglarla.
Una vez que se implementan las funciones principales, generalmente trato de poner el sistema en uso lo más cerca posible del entorno de producción. Esto le da a) cualquier error que pueda haber omitido anteriormente yb) tiene una buena idea de la prioridad de las siguientes funciones.
Luego puedes seguir implementando las funciones restantes según sea necesario.
Calidad de código frente a características
Teniendo en cuenta lo anterior, tiendo a sacrificar funciones por la calidad del código, si tengo que hacer una fecha límite. Simplemente porque, al menos en mi línea de trabajo, cuando termino algo, mi administración asume que está hecho. Y que me puedan dar la siguiente tarea. No tengo mucho tiempo para hacer el código mejor después del hecho.
Ahora, ¿qué pasa con el manejo de excepciones?
Si no desea implementar eso de forma instantánea, solo puede enumerarlo como otra característica de la lista. Y cuando llegas a eso puedes implementar eso. Pero lo más probable es que en tu caso, 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 sea el resultado. No trague las excepciones en alguna parte.