Przeczytam "Lepsza, szybsza, jaśniejsza Java" (autor: Bruce Tate i Justin Gehtland) i jestem zaznajomiony z wymaganiami czytelności w zespołach typu zwinnego, takich jak Robert Martin omawia w swoich czystych książkowych książkach. W zespole, w którym obecnie jestem, powiedziano mi wyraźnie, że nie należy używać operatora +
, ponieważ tworzy on dodatkowe (i niepotrzebne) obiekty tekstowe w czasie wykonywania.StringBuilder/StringBuffer vs. "+" Operator
Ale ten numer article, napisany w 2004 roku, mówi o tym, jak przydział obiektów wynosi około 10 instrukcji maszynowych. (w zasadzie za darmo)
Mówi także o tym, w jaki sposób GC pomaga również obniżyć koszty w tym środowisku.
Jaka jest rzeczywista wartość kompromisów między używaniem +
, StringBuilder
lub StringBuffer
? (W moim przypadku jest to StringBuffer
tylko dlatego, że jesteśmy ograniczeni do Javy 1.4.2.)
StringBuffer
dla mnie skutkuje brzydkim, mniej czytelnym kodem, jak pokazuje kilka przykładów z książki Tate'a. I StringBuffer
jest zsynchronizowany z wątkami, który wydaje się mieć własne koszty, które przeważają nad "niebezpieczeństwem" podczas używania operatora +
.
Myśli/Opinie?
Podobny queation tutaj http://stackoverflow.com/questions/4645020/when-to-use-stringbuilder-in-java – Navi
możliwe duplikat [StringBuilder vs konkatenacji String w toString () w Javie] (http://stackoverflow.com/questions/1532461/stringbuilder-vs-string-concatenation-in-tostring-in-java) –
Możliwy duplikat [StringBuilder vs String concatenation w toString() w Javie] (http://stackoverflow.com/questions/1532461/stringbuilder-vs-string-concatenation-in-tostring-in-java) –