Y a-t-il un modèle de conception ou un moyen propre pour effectuer la vérification des paramètres de fonction / méthode (contre les valeurs autorisées)?
Actuellement, beaucoup de code initial dans mes fonctions consiste en ces vérifications de paramètre (chaînes vides, caractères non valides, existants ID, ...) et, bien que nécessaire, c'est un peu laid et obfute le code «réel» de la fonction. Généralement, mon code va quelque chose comme ceci: p> pour la solution, je pense que je pense dans les lignes de
J'utilise Python, bien que je suppose qu'une bonne solution serait indépendante de la langue. P> p>
3 Réponses :
Je suppose pas vraiment, pas Je précise personnellement à cela dans mes fonctions où le code réel commence s'il y a beaucoup de vérification de paramètres à effectuer (aléatoire Exemple): P> def setpoint(x, y):
# checking for out of bounds
if x < 0 or x >= maxwidth: return false
if y < 0 or y >= maxheight: return false
# start function
map[x][y] = true
La seule chose assez indépendante de la langue que je peux imaginer pour le moment est une sorte de contrat de code afin que vous puissiez faire des choses comme: Je suppose que vous pourriez trouver une implémentation de certains trie dans la plupart des langages de programmation. p> Microsoft travaille sur une implémentation et il y a une implémentation Java . p> p>
Je ne connais pas les contrats de code. Avez-vous un bon lien de démarrage? (Les résultats renvoyés par Google semblaient un peu trop élevé à première vue)
Chaque paramètre d'une méthode représente une entité. Il doit y avoir des contraintes ou des hypothèses sur les valeurs d'argument basées sur lesquelles la méthode / la classe entière fonctionne. Donc, j'écris des méthodes de vérification de la validité de ces paramètres.
void drawRectangle(int length, int width) { if (isValidLength(length) == false || isValidWidth(width) == false) { // log about invalid argument so that it can be easily traced for debugging return; } // remaining code } boolean isValidLength(int length) { if (value < 0 || value > 100) { return false; } return true; }
Extraire les paramètres de fonction dans un Objet de paramètre et le rendre responsable de la validation. Qui ne laisse rien d'autre que la logique commerciale dans
my_function code>.