Jawa / Говнокод #3008 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 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-ы :-)

Запостил: Andronix Andronix, (Updated )

Комментарии (7) RSS

  • 1. сортировка (есть итератор)
    2. повторяющиеся ключи (нет проверок на повторы)
    следовательно - мапа не выход (даже сортед)
    3. нет генериков - вероятно древний ждк
    итого: не говнокод а "решение для данного конкретного случаю"
    Ответить
    • Говнокод, еще какой говнокод!
      1) Сортировкой здесь и не пахнет, а если вы имели ввиду упорядоченность данных, то LinkedHashMap эту проблему замечательно решает
      2) Повторяющиеся ключи можно было оформлять в виде Map<String, List<Attribute>> (учитывая, что это писалось давно, т.к. сейчас лучше использовать Multimap из Google Collections для таких целей)
      3) Отсутсвие generic-ов говорит о том, что это leacy-код, который писался еще под 1.4, а сейчас уже работает на 1.6, но просто не у кого не доходили руки его параметризировать.
      А самый главный недостаток в этом коде - это bad performance, потому как получение элемента из HashMap происходит по hashCod-у, и это в разы быстрее, чем линейный перебор элементов по indexOf.
      Ответить
    • 2. повторяющиеся ключи (нет проверок на повторы) - attributeNames.indexOf(attrubuteName) вернет позицию первого ключа

      говнокод говнокодом, да еще и тупо грамматические ошибки
      Ответить
      • Грамматические ошибки - это норма для нашего проекта 🙂 У нас есть пакет типа xxx.xxx.webserices, в котором лежит куча всякого стаффа, связанного с веб-сервисами, но переименовать его уже нельзя, т.к. на нем завязано много стороннего кода.
        Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8