- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
package efi.base.business.metadata;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class MetaModel {
private String name = null;
private List attributeNames = new ArrayList();
private List attributeValues = new ArrayList();
public MetaModel(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void addAttribute(Attribute attribute) {
attributeNames.add(attribute.getName());
attributeValues.add(attribute);
}
public Attribute getAttribute(String attrubuteName) {
return (Attribute) attributeValues.get(attributeNames.indexOf(attrubuteName));
}
public Iterator attributesIterator() {
return attributeNames.iterator();
}
}
Человек, писавший этот говнокласс, видимо и не подозревал, что в JDK кроме листов есть еще и Map-ы :-)
guest 14.04.2010 20:47 # +0.4
guest 14.04.2010 21:23 # +0.8
guest 14.04.2010 21:50 # +1
2. повторяющиеся ключи (нет проверок на повторы)
следовательно - мапа не выход (даже сортед)
3. нет генериков - вероятно древний ждк
итого: не говнокод а "решение для данного конкретного случаю"
Andronix 15.04.2010 13:39 # +0.4
1) Сортировкой здесь и не пахнет, а если вы имели ввиду упорядоченность данных, то LinkedHashMap эту проблему замечательно решает
2) Повторяющиеся ключи можно было оформлять в виде Map<String, List<Attribute>> (учитывая, что это писалось давно, т.к. сейчас лучше использовать Multimap из Google Collections для таких целей)
3) Отсутсвие generic-ов говорит о том, что это leacy-код, который писался еще под 1.4, а сейчас уже работает на 1.6, но просто не у кого не доходили руки его параметризировать.
А самый главный недостаток в этом коде - это bad performance, потому как получение элемента из HashMap происходит по hashCod-у, и это в разы быстрее, чем линейный перебор элементов по indexOf.
guest 15.04.2010 15:21 # +1.2
говнокод говнокодом, да еще и тупо грамматические ошибки
Andronix 15.04.2010 15:34 # −0.4
guest 15.04.2010 20:38 # −3.2