这是硬编码吗?我怎么能避免呢?

时间:2010-07-07 16:24:47

标签: xml design-patterns doctype anti-patterns hardcode

我正在为特定的XML结构创建解析器,我正面临着可能的硬编码问题。这里:

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

文字'default'是Xml结构中的有效标记,这是硬编码吗?我可以使用其他技术来搜索默认标签吗?

我考虑过使用doctype但是,如何指定'default'是默认值的标记?

也许不是硬编码因为这个标签是我的标准。

感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

我最终使用我的程序进行了大量的XML解析,而我通常做的是创建一个包含标记名称的常量并使用它来代替。这样,如果XML标记发生变化,您只需在一个位置更改字符串,而不是代码中的任何位置。

答案 1 :(得分:1)

是硬编码吗?是。

那就是说,你需要权衡几个因素。首先,考虑“默认”属性名称不断变化的可能性,以及声明和跟踪各种常量所需的附加代码。

要考虑的另一件事是一致性。如果您有其他可能更改属性名称的位置,那么您将需要为所有这些使用常量。

另一方面,使用常量进行?XML或“编码”是浪费时间,因为那些是众所周知/明确定义的项目......

另一方面,另一方面,是错字的可能性。当你使用常量时,你有编译时支持,以确保你说“DEFAULTPROPERTY”的任何地方都无处不在。而使用字符串的处理方式意味着问题可能直到运行时才出现,或者直到它们发生在您的代码中一小部分使用的部分。

我想所有这些都是关于说“使用常数”的方式。