Récemment, j'ai travaillé sur des avertissements FindBugs concernant l'exposition de l'état interne, c'est-à-dire quand une référence à un tableau a été renvoyée au lieu de renvoyer une copie du tableau. J'ai créé quelques modèles pour faciliter la conversion de ce code.Modèles d'éditeur pour la programmation défensive
Lequel avez-vous créé pour soutenir la programmation défensive et que vous voulez partager avec la foule SO?
Les modèles que j'ai créé jusqu'à présent (à titre d'exemple):
Pour créer une copie d'un tableau de revenir d'une méthode:
Pour cloner un objet:
(${o}!= null?(${type})${o}.clone():null)
J'inverserais l'initialisation "boolean res" et le test d'égalité de classe. Ensuite, le code "else" peut être déplacé dans la clause "then". Je pense que cela rend la compréhension plus facile et moins sujette aux erreurs. –
@Randy: modèle corrigé – VonC
Mais ce modèle ne fonctionne que si la classe implémente Comparable, non? Est-ce que toutes vos classes implémentent des comparables? Si oui, quels sont les avantages et les frais généraux de codage en valent-ils la peine? – dhiller