Question

Je crée un analyseur syntaxique pour une structure XML spécifique et je suis face à un éventuel problème de hardcoding. Ici:

private function filterDefaultParams($param){
    #FIXME Hardcoding?
    return array_key_exists('default',$param);
}

Le « défaut » littérale est une balise valide dans la structure de Xml, est-ce hardcoding? Puis-je utiliser une autre technique pour rechercher des balises de valeurs par défaut?

Je considérais en utilisant un type de document, mais, comment puis-je préciser que « par défaut » est la balise pour valeurs par défaut?

est pas hardcoding Peut-être parce cette balise est le standard.

Merci pour votre aide.

Était-ce utile?

La solution

est-il hardcoding? Oui.

Cela dit, vous devez peser deux facteurs. Considérons d'abord la probabilité du nom de la propriété « par défaut » en constante évolution par rapport au code supplémentaire requis pour déclarer et suivre diverses constantes.

Une autre chose à considérer est la cohérence. Si vous avez d'autres endroits où les noms de propriétés pourraient changer alors vous aurez envie d'utiliser des constantes pour tous.

D'autre part, en utilisant une constante pour? XML ou « coder » est une perte de temps que ceux-ci sont bien connus / éléments bien définis ...

Ont-il d'autre part, est la probabilité de fautes de frappe. Lorsque vous utilisez une constante que vous avez le soutien de compilation pour faire en sorte que partout où vous dites « DEFAULTPROPERTY » il est correct partout ou nulle part. Alors que l'aide de la chaîne de façon de faire des moyens de choses qu'un problème pourrait ne pas apparaître avant l'exécution ou jusqu'à ce qu'ils arrivent sur cette petite section utilisée de votre code.

Je suppose que tout cela était une manière détournée de dire: « utiliser une constante ».

Autres conseils

Je vent par faire beaucoup de parsing XML avec mes programmes, et ce que je fais habituellement est de créer une constante contenant le nom de l'étiquette et utilisez-le. De cette façon, si la balise XML ne change jamais, il suffit de changer votre chaîne dans un seul endroit au lieu de partout dans le code.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top