Это жесткое кодирование?Как я могу избежать этого? - PullRequest
1 голос
/ 07 июля 2010

Я создаю парсер для определенной структуры XML и сталкиваюсь с возможной проблемой жесткого кодирования. Здесь:

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

Литерал 'default' является допустимым тегом в структуре XML, это жесткое кодирование? Могу ли я использовать другую технику для поиска тегов по умолчанию?

Я подумал об использовании типа документа, но как я могу указать, чем «default» является тегом для значений по умолчанию?

Возможно, это не жесткое кодирование, потому что этот тег - мой стандарт.

Спасибо за вашу помощь.

Ответы [ 2 ]

5 голосов
/ 07 июля 2010

Я часто выполняю синтаксический анализ XML со своими программами, и обычно я создаю константу, содержащую имя тега, и использую ее вместо этого. Таким образом, если тег XML когда-либо изменится, вам нужно будет изменить строку только в одном месте, а не везде в коде.

1 голос
/ 07 июля 2010

Это жесткое кодирование? Да.

Тем не менее, вам нужно взвесить пару факторов. Во-первых, рассмотрим вероятность того, что имя свойства «по умолчанию» когда-либо изменится, в сравнении с дополнительным кодом, необходимым для объявления и отслеживания различных констант.

Еще одна вещь, которую следует учитывать, это последовательность. Если у вас есть другие места, где имена свойств могут измениться, тогда вы захотите использовать константы для всех них.

С другой стороны, использование константы для? XML или «кодирования» является пустой тратой времени, поскольку это хорошо известные / четко определенные элементы ...

С другой стороны, есть вероятность опечаток. Когда вы используете константу, вы получаете поддержку времени компиляции, чтобы везде, где вы говорите «DEFAULTPROPERTY», она была правильной везде или нигде. Принимая во внимание, что использование строкового способа выполнения действий означает, что проблема может не отображаться до времени выполнения или до тех пор, пока они не возникнут в этой небольшой части вашего кода.

Полагаю, все это было примерно так: "использовать константу".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...