9
votes

Qu'est-ce qu'un moyen propre (ou modèle) de faire fonctionner des paramètres de fonction?

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: xxx

pour la solution, je pense que je pense dans les lignes de Décorateurs en Python.
J'utilise Python, bien que je suppose qu'une bonne solution serait indépendante de la langue.


1 commentaires

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 .


3 Réponses :


0
votes

Je suppose pas vraiment, pas un uniforme fort> de le faire.

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


0 commentaires

3
votes

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: XXX

Je suppose que vous pourriez trouver une implémentation de certains trie dans la plupart des langages de programmation.

update

Microsoft travaille sur une implémentation et il y a une implémentation Java .


1 commentaires

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)



1
votes

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;
}


0 commentaires