在xpath表达式中使用字符串文字是不好的做法吗?

时间:2009-11-13 02:58:56

标签: c# xml string xpath

我目前在xpath表达式中使用字符串文字。例如:

paragraphList = root.SelectNodes("paragraph");

我知道你通常应该避免使用文字值,但我认为这是安全的,因为你的xml节点的名称很少会改变。这是不好的做法,还是我一样?

2 个答案:

答案 0 :(得分:2)

我的一般经验法则是从不使用字符串文字。我认为不使用字符串文字会有很多好处,Benjamin Cox已经提到过其中的一些文字。

  1. 集中化:如果您的所有字符串文字都被静态字符串常量替换(理想情况下所有字符串文字都在一个地方组合在一起,可能在文件级别),那么您确切知道在哪里找到所有字符串文字你的字符串引用。此外,一些编译器提供了诸如“跳转到定义”之类的便捷功能,可以更快地访问它们。

  2. 可维护性:作为1的结果,很容易看出,如果需要,您可以在一个地方更改字符串引用,并在整个代码中立即反映这些更改。

  3. 效率:内存只为您创建的每个唯一字符串引用分配一次,因此您不会像使用相同的字符串文字时那样不断地将新字符串分配到内存中在这个地方。 (有些语言,比如Ruby,可以通过鼓励使用符号而不是字符串来自动处理这种情况。)

  4. 可读性:特别是如果您的字符串文字有点神秘,则更容易阅读适当命名的静态变量:kCapturedImageDirectoryFormat而不是"capture-%.0f.tmp"

答案 1 :(得分:1)

嗯,避免文字概念背后的原则是可维护性。因此,问问自己每个决定的可维护性后果是什么。

在这种情况下,从

更改
paragraphList = root.SelectNodes("paragraph");

paragraphList = root.SelectNodes(PARAGRAPH_TAG);

似乎没有引入可读性问题。所以问题归结为懒惰和你使用每个字符串文字的地方。

我可能会做的事情(假设它只是你触摸代码)继续并最初使用字符串文字,但是只要你对任何给定字符串进行第二次使用,就把它变成一个常量。

然后,再次,如果你使用ReSharper插件到Visual Studio,你可以使用简单的键组合“引入字段”重构,所以懒惰不是那么重:-)