Il existe une approche très simple et pratique à cela, qui fonctionne pour un large éventail de projets de petite à moyenne taille. Même si cela ne fonctionnera probablement pas bien pour Mars Explorers.
Tout d'abord, déterminez ce que vous voulez que le système fasse et notez chacune des fonctionnalités individuelles. Cela peut être aussi sophistiqué qu'un tableau de bord de l'utilisateur ou aussi simple que quelques puces notées sur un morceau de papier devant vous. Mais il est important que vous sachiez quoi vous voulez qu'il fasse.
Sur cette base, on établit la structure générale du système. Encore une fois, il s'agit très souvent d'un simple dessin rapide des différentes classes / modules et de la façon dont ils sont liés les uns aux autres, mais peut être aussi complexe qu'un document entier. L'important est que vous ayez une idée de la façon dont vous allez mettre en œuvre le système. Mais cela va probablement être affiné au fur et à mesure que vous y travaillez, alors n'essayez pas d'aller vers des détails complexes et détaillés.
Parmi toutes ces fonctionnalités, déterminez quels sont les éléments clés que le programme doit faire - les fonctionnalités de base.
Ensuite, implémentez-les un par un. Maintenant, l'essentiel est de s'assurer que, une fois que vous avez implémenté une fonctionnalité, celle-ci est effectuée et fonctionne pleinement - idéalement, elle est accompagnée d'un test unitaire qui garantit qu'elle continue de fonctionner. Je suppose généralement que je serai tellement occupé que je n'aurai jamais le temps de revenir sur la fonctionnalité et de la corriger.
Une fois les fonctionnalités de base implémentées, j'essaie généralement de mettre le système à utiliser le plus près possible de l'environnement de production. Cela vous donne a) tous les bugs que vous avez pu manquer plus tôt et b) vous avez une bonne idée de la priorité des prochaines fonctionnalités.
Ensuite, vous pouvez continuer à implémenter les fonctionnalités restantes selon vos besoins.
Qualité du code et fonctionnalités
Compte tenu de ce qui précède, j'ai tendance à sacrifier les fonctionnalités à la qualité du code, si je dois respecter une date limite. Tout simplement parce que, au moins dans mon domaine de travail, lorsque je termine quelque chose, ma direction suppose que c'est fait. Et qu'ils peuvent me confier la prochaine tâche. Je n'ai pas beaucoup de temps pour rendre le code plus agréable après coup.
Maintenant, qu'en est-il de la gestion des exceptions?
Si vous ne voulez pas l'implémenter dès le départ, vous pouvez simplement le répertorier comme une autre fonctionnalité de la liste. Et quand vous y arrivez, vous pouvez l'implémenter. Mais très probablement dans votre cas, il y a probablement beaucoup d'autres choses qui sont plus importantes en premier.
Cependant, il existe une exigence minimale pour les exceptions: assurez-vous que l'utilisateur est averti en cas de problème - quelle que soit la laideur de la sortie. N'avalez pas d'exceptions quelque part.