Cliquez le lien ci-dessous pour retourner au sommaire des "tutorials pour créer une DLL Orbiter"
http://orbiter.dansteph.com/forum/index.php?topic=6335.msg95352#msg95352
Programmer à la "soviétique" pour éviter les bugsLa mémoire ne coute plus rien et les allocations mémoire (new/delete) sont une énorme source de bug et de complication donc je les évite comme la peste (je ne crois pas qu'un seul de mes addon en contienne un)
Je n'utilise que des tableaux (array) ou des structures.
char cVesselName[20]={0};
Maintenant ceci ferait hurler n'importe quelle bogosse d'un forum de programmation:
strncpy(cVesselName,GetName(), 15);
Copier quinze char dans une variable qui peut en contenir 20 ? Quel gâchis, c'est moche !
C'est vrai mais l'habitué en question n'a probablement jamais rien programmé de plus gros qu'une demo de calculette (buggée) et quand vous donnez dans les gros truc et que vous tapez 15 lignes/minutes la rigueur humaine en prend un méchant coup.
Après 30'000 lignes et pleins de retouches le code qui était "si joli et précis au byte prêt" va se transformer en cauchemars de bugs pour autant que vous ayez la chance de les détecter à temps plutôt que ça n'explose chez les utilisateurs finaux.
Donc voila, je suis pro et je programme à la soviétique : du robuste, du lisible, du sur ! Je SAIS qu’immanquablement je vais me planter de quelques bytes ici et là, que je vais changer des trucs et que je vais oublier de changer la variable, donc je n'ai aucune honte à rajouter
systématiquement des marges de 20%-30% voir du 200% pour des sujets sensibles.
Vous prévoyez de bosser avec 15 vessels qui ont un nom de dix caractères maximum ? ne vous emmerdez pas au byte prêt et allez y franchement !!!
Celui là ne vous emmerdera jamais et ne vous fera pas bouger un seul neurone en calcul et attention:
char cVesselName[20][20]={0};
La perte de mémoire est équivalente à 0.00078 fois la taille d'une image de 320x200. Sur l'ensemble du programme vous aurez "gâché" au maximum l’équivalent d'un gros icône.
Cliquez le lien ci-dessous pour retourner au sommaire des "tutorials pour créer une DLL Orbiter"
http://orbiter.dansteph.com/forum/index.php?topic=6335.msg95352#msg95352
Message modifié ( 13-07-2012 12:43 )