1. Java / Говнокод #9588

    +67

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    public static boolean areEquals(Object [] ... paires){
            for(Object [] paire : paires){
                if(paire[0] == null || !paire[0].equals(paire[1])){
                    return false;
                }
            }
            return true;
        }

    Целый день убил из-за этого говна

    Запостил: roman-kashitsyn, 02 Марта 2012

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

    • А в чем проблемы-то? Не знают о Map.Entry или не могут в свой KeyValue?
      Но я бы, из-за своей лени, сделал одним varargом четных-нечетных пар.
      Ответить
      • c нулами не работает. я в другом месте в проекте аналогичный метод написал, как раз с вараргом объектов.
        Ответить
        • Ну забыл поставить проверку. Ну отвалится с исключением.
          Так это ж самая типичная жабоошибка.
          В общем чёто не смешно.
          Ответить
          • Автор применял свой метод примерно вот так:
            return areEquals(
                new Object[] {o1.firstName(), o2.secondName()},
                new Object[] {o1.secondName(), o2.secondName()},
                new Object[] {o1.address(), o2.address()});
            Ответить
      • Кстати, недавно его тут выкладывал:
        http://ideone.com/ETwvi
        http://govnokod.ru/9512#comment131248
        Ответить
        • Хороший код. И функция равенства получше моей будет:
          return (a==b) ||
          a == null ? b == null : a.equals(b);
          Но откуда нелюбовь к циклам for( int i = 0;i < objects.length;i+=2)?
          Ответить
    • > paires
      > paire
      Французские идентификаторы - плохая примета
      Ответить
    • Инкапсулировать все эти имена и адреса в один объект и переопределять у него метод equals() - похоже, непосильная задача.
      Или аффтар испугался, что ему ещё и hashCode() переписывать придётся?
      Ответить
      • На самом деле этот код предназначается для того, чтобы "пофиксить" ворнинги Sonar: он не позволяет объединять более трёх булевских выражений в одном условии (а иногда это реально нужно). Можно, конечно, вводить несколько промежуточных переменных, но pairsEqual позволяет спрятать все эти условия в один вызов метода (да, донести до начальства, что Sonar - лишь куча бесполезного говна (особенно с текущими настройками), у нас так и не получилось. Лучше бы юнит тесты нормальные писать начали...). Хак придумал я и даже написал нормальную реализацию. Коллега почему-то решил изобрести свой велосипед (см. топик).
        Ответить

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