Xml 这是硬编码吗?我怎样才能避免呢?

Xml 这是硬编码吗?我怎样才能避免呢?,xml,design-patterns,doctype,anti-patterns,hardcode,Xml,Design Patterns,Doctype,Anti Patterns,Hardcode,我正在为一个特定的XML结构创建一个解析器,我面临一个可能的硬编码问题。在这里: private function filterDefaultParams($param){ #FIXME Hardcoding? return array_key_exists('default',$param); } 文本“default”是Xml结构中的有效标记,这是硬编码吗?我可以使用另一种技术来搜索默认标记吗 我考虑过使用doctype,但是,如何指定默认值的标记不是'default' 可

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

private function filterDefaultParams($param){
    #FIXME Hardcoding?
    return array_key_exists('default',$param);
}
文本“default”是Xml结构中的有效标记,这是硬编码吗?我可以使用另一种技术来搜索默认标记吗

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

可能不是硬编码,因为这个标签是我的标准


谢谢您的帮助。

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

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

这是硬编码吗?对

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

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

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

另一方面,是打字错误的可能性。当您使用常量时,您有编译时支持,以确保您所说的“DEFAULTPROPERTY”在任何地方都是正确的。然而,使用字符串方式进行操作意味着问题可能要到运行时或代码中很少使用的部分出现时才会出现


我想所有这些都是一种迂回的说法,“使用常数”。

这是硬编码吗?对

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

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

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

另一方面,是打字错误的可能性。当您使用常量时,您有编译时支持,以确保您所说的“DEFAULTPROPERTY”在任何地方都是正确的。然而,使用字符串方式进行操作意味着问题可能要到运行时或代码中很少使用的部分出现时才会出现


我想所有这些都是一种迂回的说法,“使用一个常数”。

如果数据永远不会改变,只在一个地方使用,那么“硬编码”就不是天生的“坏”,而不是出于正确的原因,比如,如果数据永远不会改变,并且只在一个地方使用。-1如果XML语法改变,你将不得不改变很多,而不仅仅是一个字符串。根据语法,你指的是结构吗?因为这当然比改变一个字符串需要更多的工作。我只提到标签名称正在更改。如果这个xml文档是由其他人生成的,并且他们决定更改一个特定的标记名,那么常量就很方便了,因为您只需在一个地方更改字符串值,而不必在整个代码中进行更改。请阅读我对答案的评论。-1如果XML语法发生变化,您将不得不改变的不仅仅是一个字符串。根据语法,您指的是结构吗?因为这当然比改变一个字符串需要更多的工作。我只提到标签名称正在更改。如果这个xml文档是由其他人生成的,并且他们决定更改一个特定的标记名,那么常量就很方便了,因为您只需在一个地方更改字符串值,而不必在整个代码中进行更改。阅读我对答案的评论。我一直在考虑“为XML使用常量…”。。。是在浪费时间……“我同意你的看法,我发现根本问题(当你编写众所周知/定义良好的文档时)我的xml模式定义得不够好,这就是我担心未来问题的原因。我将为XML结构提出更强大的设计,并降低风险。谢谢。我一直在考虑“用一个常量表示XML…”。。。是在浪费时间……“我同意你的看法,我发现根本问题(当你编写众所周知/定义良好的文档时)我的xml模式定义得不够好,这就是我担心未来问题的原因。我将为XML结构提出更强大的设计,并降低风险。非常感谢。