шаблоны

Anti-Patterns или как делать не надо

Давно собирался собрать коллекцию анти-паттернов, дабы самому просвятиться и другим помочь. Данную заметку буду периодически пополнять, по мере нахождения последних.

Итак, азы! :)

Конкатенация строк

String s = "";
for (Item i : items) {
    s += ", " + i.getText();
}

Во-первых, конкатенация строк дело плохое, т.к. при этом образуется новый объект строки. Во-вторых, конкатенация в цикле приведет к тому, что для получения единственной конечной строки образуется items.length2 новых мусорных объектов.
Вместо конкатенации необходимо использовать StringBuffer (или даже лучше StringBuilder, если не нужна "thread safe"). При этом, выражения типа stringBuffer.append("val=" + value); естественно приведут к полной бесполезности использования StringBuffer'а.