0

现在是周五重构时间!!!

我有一个用于生成 SQL 语句的对象。

oDb.From 设置一次。然后元数据可能会随着时间的推移添加连接,直到我们将它们全部组合并传回。

所以问题是,在用 sbFrom.Append() 替换之前,我保留语法 oDb.From += 的次数是多少?

那是#3、4还是15次?

还是真的是内容长度问题,如果是,那么神奇的#是什么?

TIA

4

6 回答 6

4

完全不科学的经验法则:我会为三个要素以上的任何事情做这件事——不是因为性能提高,而是出于(希望)是好习惯。

于 2009-10-30T19:13:55.537 回答
1

如果我必须将两个以上的元素附加到一个字符串,我几乎总是使用 StringBuilder(我发现如果我附加两个以上,随着人们开始添加到我的代码中,不可避免地会有更多......所以 StringBuilder 已经存在他们)。

于 2009-10-30T19:19:30.020 回答
1

阅读http://www.codinghorror.com/blog/archives/001218.html

该类StringBuilder专为构建庞大字符串的场景而设计,并且使用普通字符串连接确实太慢了。

很有可能,对于您正在处理的那种字符串长度,它实际上根本不会产生任何影响 - 只需使用您最熟悉的任何内容。

于 2009-10-30T19:48:34.050 回答
0

我会说任何你希望长度超过 1-5MB 的东西,或者任何在小块中分配大量字符串的东西。

于 2009-10-30T19:16:23.037 回答
0

这并非完全不科学——我曾经读过一篇文章,其中 .NET 字符串生成器在 5 次连接后实际上变得更加高效。这是我通常使用字符串生成器的时候。

另外 - 我认为可读性确实在这方面发挥了作用,在某些情况下我也更喜欢字符串格式。

于 2009-10-30T19:20:35.103 回答
0

当算法中的连接数超过 O(n) 时,我使用 StringBuilder。如果连接的数量为 O(1),则大多数情况下可读性都会受到影响(除非字符串非常大,这种情况并不常见)。

或者当我知道有一个字符串会变得足够大时。(超过 100k 字符)

于 2009-10-30T19:59:58.767 回答