Si vous aviez à choisir votre Favori (sage) des techniques pour se défendre de codage, quels seraient-ils? Bien que mes langues sont Java et Objective-C (avec de l'expérience en C++), n'hésitez pas à répondre dans n'importe quelle langue. L'accent ici sur les intelligent sur les techniques de défense autres que celles que 70%+ de nous ici connaissent déjà. Alors maintenant, il est temps de creuser profondément dans votre sac à malices.
En d'autres termes, essayez de penser à autre chose qu'à ce inintéressant exemple:
-
if(5 == x)
au lieu deif(x == 5)
: pour éviter les imprévus affectation
Voici quelques exemples de certains intrigante meilleure défense pratiques de programmation (un langage spécifique, en sont des exemples en Java):
- Verrouillez vos variables jusqu'à ce que vous savez que vous avez besoin de les changer
Qui est, vous pouvez déclarer toutes les variables final
jusqu'à ce que vous savez que vous aurez besoin de la changer, à quel point vous pouvez supprimer l' final
. Généralement inconnu fait est que c'est aussi valable pour la méthode params:
public void foo(final int arg) { /* Stuff Here */ }
- Quand quelque chose de mauvais arrive, laissez une trace de preuves derrière
Il y a un certain nombre de choses que vous pouvez faire lorsque vous avez une exception: évidemment, la journalisation et de l'exécution de certaines de nettoyage serait un peu. Mais vous pouvez aussi laisser une trace de preuve (par exemple, la définition de variables de sentinelle des valeurs comme "IMPOSSIBLE DE CHARGER le FICHIER" ou 99999 serait utile dans le débogueur, dans le cas où vous arrive de souffler passé une exception catch
-bloc).
- Quand il s'agit de la cohérence: le diable est dans les détails
Être compatibles avec les autres bibliothèques que vous utilisez. Par exemple, en Java, si vous créez une méthode qui extrait une gamme de valeurs de la limite inférieure inclusive et la limite supérieure exclusif. Cela va le rendre compatible avec des méthodes comme String.substring(start, end)
qui fonctionne de la même façon. Vous trouverez toutes ces type de méthodes dans le JDK Sun à se comporter de cette façon qu'elle le fait diverses opérations, y compris l'itération des éléments compatibles avec les tableaux, où les indices sont à partir de Zéro (inclusive) pour la durée de la matrice (exclusif).
Donc, quels sont les favoris des pratiques défensives de la vôtre?
Mise à jour: Si vous ne l'avez pas déjà, n'hésitez pas à carillon. Je suis de donner une chance à plus de réponses à venir en avant-je choisir l' officiel de la réponse.