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

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
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
for(int i = 0; i < s.length(); i++)
        {
            String c = s.substring(i, i + 1);
            if("_".equals(c) || " ".equals(c) || "-".equals(c))
            {
                capitalize = true;
                continue;
            }
            if(c.toUpperCase().equals(c))
            {
                if(lastDecapitalized && !lastCapital)
                    capitalize = true;
                lastCapital = true;
            } else
            {
                lastCapital = false;
            }
            if(capitalize)
            {
                if(p == null || !p.equals("_"))
                {
                    result.append(c.toUpperCase());
                    capitalize = false;
                    p = c;
                } else
                {
                    result.append(c.toLowerCase());
                    capitalize = false;
                    p = c;
                }
            } else
            {
                result.append(c.toLowerCase());
                lastDecapitalized = true;
                p = c;
            }
        }

Позор Jboss'овцам!
это код из HibernateTools, теперь понятно почему оно такое глючное Г

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

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

  • А в чем проблема то? ИМХО аффтар не разабрался просто, что этот код делает.

    Единственная проблема которую я вижу, это работа со строками длинны 1, вместо работы с char. Но учитывая, то что этот код выполняется один раз когда генерятся/проверяются мапинги, перфоманс не критичен.
    Ответить
    • аффтар разобрался
      я своим стажёрам за такой код сразу отсекаю гендорный фактор 😉
      какая разница критично оно к скорости или нет, этот же код ещё потом поддерживать надо

      неиспользование char это только первый пункт, второе это
      if(capitalize)
      {
      if(p == null || !p.equals("_"))
      {
      result.append(c.toUpperCase());
      capitalize = false;
      p = c;
      } else
      {
      result.append(c.toLowerCase());
      capitalize = false;
      p = c;
      }
      } else
      {
      result.append(c.toLowerCase());
      lastDecapitalized = true;
      p = c;
      }
      оно правильно пишется так
      lastDecapitalized |= !capitalize;
      result.append(capitalize || (p!= null && '_' == p) ? Character.toUpperCase(c) : Character.toLowerCase(c));
      capitalize = false;
      p = c;
      или около того
      Ответить
      • Твой вариант просто не читабельный, выгоды не вижу.
        Ответить
        • ну разверну я тренарный оператор, что измениться то?
          проблема не в количестве строк, а в том что действия (p = c, capitalize = false;), которые ВСЕГДА выполняются за каким-то лядом прописаны во все ветки условий
          Ответить
            • спасибо, Кэп!
              что и было проделано, остальные изменения - дело вкуса (и наличия автоматического форматтера кода)
              Ответить
  • Я умылся и вымыл ноги, разделся и забрался в прохладную постель, провалился во взбитую пуховую перину и мечты о Пашке снова овладели моим организмом. Я стащил трусы, скомкал и обнял подушку, как будто это был Пашка и быстро уснул.
    Ответить

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

Семь раз отмерь — один отрежь, guest!

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


    8