1. Список говнокодов пользователя LexeY4eg

    Всего: 4

  2. Java / Говнокод #9107

    +65

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    for (...) {
      Comparator<Date> date_comparator = new Comparator<Date>() {
        @Override
        public int compare(Date s1, Date s2) {
          long n1 = s1.getTime();
          long n2 = s2.getTime();
          if (n1 < n2)
            return -1;
          else if (n1 > n2)
            return 1;
          else
            return 0;
        }
      };
      Date beforeSaveDate = (Date) beforeSaveParam.getValue();
      beforeSaveDate.setSeconds(0);
      Date toSaveDate = (Date) toSaveParam.getValue();
      comparedValue = date_comparator.compare(beforeSaveDate, toSaveDate);
    }

    Задача была сравнить две даты, игнорируя при этом секунды.

    LexeY4eg, 13 Января 2012

    Комментарии (4)
  3. Java / Говнокод #8613

    +80

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    private static final char DELIM = '_';
    
    public String createDocName() {
        ...
        final String sDelim = Character.toString(DELIM);
        String res = stringWithDelimiter(docType) + stringWithDelimiter(docNumber) + stringWithDelimiter(docDate) + stringWithDelimiter(documentReceiptDate);
        res = res.length() < sDelim.length() ? "" : res.substring(0, res.length() - sDelim.length());
        res = res.replace(sDelim + sDelim + sDelim, sDelim);
        res = res.replace(sDelim + sDelim, sDelim);
    
        if (res.charAt(0) == DELIM)
          res = res.substring(1);
    
        if (res.charAt(res.length() - 1) == DELIM)
          res.substring(0, res.length() - sDelim.length());
        
        return res;
    }
    private String stringWithDelimiter(Object o) {
        final String sDelim = Character.toString(DELIM);
        String s = (String) o;
        return StringUtils.isNotEmpty(s) ? s + sDelim : sDelim;
    }

    метод createDocName должен из нескольких полей документа составить имя документа, используя в качестве разделителя "_".
    Сначала я не мог предположить что делает этот код, но подсказал коллега по работе:
    потензицально, вызов String res = stringWithDelimiter(docType) + stringWithDelimiter(docNumber) + stringWithDelimiter(docDate) + stringWithDelimiter(documentReceiptDate) ; может давать запись например такую: "docType___" - в случае если docNumber, docDate и documentReceiptDate будут пустыми строками (а можно получить и "___documentReceiptDate".
    НО, предусмотрительный разработчик позаботился об это проблеме!
    Он заменяет, "___" и "__" с помощью:
    res = res.replace(sDelim + sDelim + sDelim, sDelim);
    res = res.replace(sDelim + sDelim, sDelim);
    Затем удаляет знаки подчеркиваний в начале и в конце строки:
    if (res.charAt(0) == DELIM)
    res = res.substring(1);
    if (res.charAt(res.length() - 1) == DELIM)
    res.substring(0, res.length() - sDelim.length());

    Отличное решение, можно было бы конечно переписать метод stringWithDelimiter, чтобы он не дописывал "_" для пустых строк, но это ведь не так круто правда? Жаль только что придется этот класный код снова переписывать если вдруг измениться число параметров, или поменяется разделитель...

    LexeY4eg, 23 Ноября 2011

    Комментарии (0)
  4. JavaScript / Говнокод #8612

    +153

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if (!field.parentElement.childNodes[0].checked)
    {
    getElementByFieldName("Original").parentNode.childNodes[0].disabled = true;
    getElementByFieldName("Duplicate").parentNode.childNodes[0].disabled = true;
    ...

    Далее идет ещё примерно 20 аналогичных обращений, аля parentNode.childNodes[0]
    Очень читабельный и понятный код! :)

    LexeY4eg, 23 Ноября 2011

    Комментарии (20)
  5. Java / Говнокод #8610

    +81

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    Date date = (Date)value.getParam("DocReceiptDate");
        if (date.getHours() == 24) {
          date.setHours(0);
        }
        String documentReceiptDate = (new SimpleDateFormat("dd.MM.yyyy.kk.mm")).format(date);

    Элегантная попытка форматирования даты.
    Задача было вместо 24 часов писать 00, например не "24.11.2011.24.23", а "24.11.2011.00.23".
    Как все уже догадались, следовало просто использовать формат "dd.MM.yyyy.HH.mm".

    LexeY4eg, 23 Ноября 2011

    Комментарии (1)