Я читаю "Лучше, быстрее, легче Java" (Брюс Тейт и Джастин Гетланд), и я знаком с требованиями к удобочитаемости в гибких командах типа, например, что Роберт Мартин обсуждает в своих чистых книгах по кодированию. В команде, в которой я сейчас участвую, мне было сказано явно не использовать оператор +
, поскольку он создает дополнительные (и ненужные) строковые объекты во время выполнения.
Но это статья, Написанная в '04, говорит о том, как распределение объектов составляет около 10 машинных команд. (по существу свободный)
В нем также говорится о том, как GC также помогает снизить затраты в этой среде.
Каковы фактические компромиссы между использованием +
, StringBuilder
или StringBuffer
? (В моем случае это StringBuffer
, только если мы ограничены Java 1.4.2.)
StringBuffer
для меня приводит к уродливому, менее читаемому коду, как показывает несколько примеров в книге Тейта. И StringBuffer
синхронизируется по потоку, который, как представляется, имеет свои собственные затраты, которые перевешивают "опасность" при использовании оператора +
.
Мысль/мнение?