我正在为特定的XML结构创建解析器,我正面临着可能的硬编码问题。这里:
private function filterDefaultParams($param){
#FIXME Hardcoding?
return array_key_exists('default',$param);
}
文字'default'是Xml结构中的有效标记,这是硬编码吗?我可以使用其他技术来搜索默认标签吗?
我考虑过使用doctype但是,如何指定'default'是默认值的标记?
也许不是硬编码因为这个标签是我的标准。
感谢您的帮助。
答案 0 :(得分:5)
我最终使用我的程序进行了大量的XML解析,而我通常做的是创建一个包含标记名称的常量并使用它来代替。这样,如果XML标记发生变化,您只需在一个位置更改字符串,而不是代码中的任何位置。
答案 1 :(得分:1)
是硬编码吗?是。
那就是说,你需要权衡几个因素。首先,考虑“默认”属性名称不断变化的可能性,以及声明和跟踪各种常量所需的附加代码。
要考虑的另一件事是一致性。如果您有其他可能更改属性名称的位置,那么您将需要为所有这些使用常量。
另一方面,使用常量进行?XML或“编码”是浪费时间,因为那些是众所周知/明确定义的项目......
另一方面,另一方面,是错字的可能性。当你使用常量时,你有编译时支持,以确保你说“DEFAULTPROPERTY”的任何地方都无处不在。而使用字符串的处理方式意味着问题可能直到运行时才出现,或者直到它们发生在您的代码中一小部分使用的部分。我想所有这些都是关于说“使用常数”的方式。