1

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

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

文字“默认”是 XML 结构中的有效标记,这是硬编码吗?我可以使用另一种技术来搜索默认标签吗?

我考虑过使用文档类型,但是,我如何指定“默认”之外的默认值标签?

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

谢谢您的帮助。

4

2 回答 2

5

我最终用我的程序做了很多 XML 解析,我通常做的是创建一个包含标签名称的常量并使用它。这样,如果 XML 标记发生更改,您只需在一处更改字符串,而不是在代码中的任何地方更改。

于 2010-07-07T16:27:35.700 回答
1

是硬编码吗?是的。

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

要考虑的另一件事是一致性。如果您有其他地方的属性名称可能会更改,那么您将希望对所有这些地方都使用常量。

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

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

我想所有这些都是关于“使用常量”的说法。

于 2010-07-07T16:38:45.670 回答