现在是周五重构时间!!!
我有一个用于生成 SQL 语句的对象。
oDb.From 设置一次。然后元数据可能会随着时间的推移添加连接,直到我们将它们全部组合并传回。
所以问题是,在用 sbFrom.Append() 替换之前,我保留语法 oDb.From += 的次数是多少?
那是#3、4还是15次?
还是真的是内容长度问题,如果是,那么神奇的#是什么?
TIA
现在是周五重构时间!!!
我有一个用于生成 SQL 语句的对象。
oDb.From 设置一次。然后元数据可能会随着时间的推移添加连接,直到我们将它们全部组合并传回。
所以问题是,在用 sbFrom.Append() 替换之前,我保留语法 oDb.From += 的次数是多少?
那是#3、4还是15次?
还是真的是内容长度问题,如果是,那么神奇的#是什么?
TIA
完全不科学的经验法则:我会为三个要素以上的任何事情做这件事——不是因为性能提高,而是出于(希望)是好习惯。
如果我必须将两个以上的元素附加到一个字符串,我几乎总是使用 StringBuilder(我发现如果我附加两个以上,随着人们开始添加到我的代码中,不可避免地会有更多......所以 StringBuilder 已经存在他们)。
阅读http://www.codinghorror.com/blog/archives/001218.html
该类StringBuilder
专为构建庞大字符串的场景而设计,并且使用普通字符串连接确实太慢了。
很有可能,对于您正在处理的那种字符串长度,它实际上根本不会产生任何影响 - 只需使用您最熟悉的任何内容。
我会说任何你希望长度超过 1-5MB 的东西,或者任何在小块中分配大量字符串的东西。
这并非完全不科学——我曾经读过一篇文章,其中 .NET 字符串生成器在 5 次连接后实际上变得更加高效。这是我通常使用字符串生成器的时候。
另外 - 我认为可读性确实在这方面发挥了作用,在某些情况下我也更喜欢字符串格式。
当算法中的连接数超过 O(n) 时,我使用 StringBuilder。如果连接的数量为 O(1),则大多数情况下可读性都会受到影响(除非字符串非常大,这种情况并不常见)。
或者当我知道有一个字符串会变得足够大时。(超过 100k 字符)