2010-11-01 5 views
0

Est-ce considéré comme une mauvaise conception si une fonction utilise la valeur d'un paramètre uniquement si un autre paramètre a une certaine valeur?Dépendances des paramètres de fonction

Voici un exemple fonction:

validate_input($field_name, $validation_rule, $validation_value); 

Voici la fonction en cours d'utilisation:

validate_input("username", "required"); 
validate_input("username", "min_length", 3); 

Dans le premier exemple d'utilisation du troisième paramètre est omis. Le second paramètre a la valeur "required" et cela rend le troisième paramètre non pertinent. Si un troisième paramètre est passé, la fonction n'en tiendra pas compte.

Est-ce que cela rend la conception de la fonction mauvaise?

+1

Ceci est non seulement pas une mauvaise conception, mais assez bon! Tout le monde déteste ces douze arguments-fonctions-de-ceux-je-réellement-seul-à-propos d'un dans Win32API. Et tout le monde déteste XML pour des "fonctionnalités" très ennuyeuses comme 'required =" required "' (je pense que c'est la raison pour laquelle il est 'contenteditable =" true "' en HTML5, donc ces fanatiques XML n'ont pas besoin d'écrire 'contenteditable = "contenteditable" '). – NikiC

Répondre

3

Est-ce que cela rend la conception de la fonction mauvaise?

Je dirais non, absolument pas.

Si vous documentez votre code, marquez le troisième paramètre comme facultatif.

Dans phpDocumentor, ceci est obtenu en lui donnant une valeur par défaut (ce que vous devez faire de toute façon dans votre cas).

function validate_input($field_name, $validation_rule, $validation_value = null); 

Je ne suis jamais tombé sur une opinion qui se prononce contre cela.

+0

battu par 29 secondes –

+0

Merci pour l'avis et le pourboire! Je me demandais si vous pourriez donner un exemple d'une fonction PHP native qui a une telle dépendance aux paramètres (si je peux l'appeler comme ça). –

+0

@Emanuel ouais, j'ai pensé à ajouter un exemple du noyau PHP, mais je ne peux pas penser à un sur le dessus de ma tête. Il y a beaucoup de paramètres simplement * optionnels * mais ce cas est légèrement différent ... Je suis sûr à 99% que j'ai vu cela dans les fonctions PHP natives, cependant. Si j'en pense un, je l'afficherai –

1

Cela ne rend pas la conception de la fonction mauvaise; mais vous devriez peut-être définir une valeur par défaut pour le troisième paramètre dans votre définition de fonction, de sorte qu'il n'est pas obligatoire d'appeler la fonction avec un troisième paramètre.

function validate_input($field_name, $validation_rule, $validation_value=null) { 
    .... 
} 

EDIT

La fonction setlocale() en PHP de base est peut-être semblable à ce que vous voulez

Questions connexes