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