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

    Всего: 5

  2. Python / Говнокод #11655

    −93

    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
    DISC_NUMBER_REGEXS = (
            "\(disc *[0-9]+\)",
            "\(cd *[0-9]+\)",
            "\[disc *[0-9]+\]",
            "\[cd *[0-9]+\]",
            " - disc *[0-9]+$",
            " - cd *[0-9]+$",
            " disc *[0-9]+$",
            " cd *[0-9]+$"
    )               
    
    # skipped
    
                    for exp in DISC_NUMBER_REGEXS:
                            p = re.compile (exp, re.IGNORECASE)
                            album = p.sub ('', album)

    Вот такие вот регулярные выражения из плагина Album Art Search для плеера Rhythmbox. Как минимум disc|cd и \d+ автор должен был осилить?

    victor-homyakov, 27 Августа 2012

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

    +140

    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
    // http://stackoverflow.com/questions/12033790/locknew-object-cargo-cult-or-some-crazy-language-special-case
    private void foo()
    {
        if (InvokeRequired)
        {
            lock (new object())
            {
                if (m_bar!= null)
                    Invoke(new fooDelegate(foo), new object[] { });
            }
        }
        else
        {
            if(OnBazChanged != null)
                OnBazChanged();
        }
    }

    По одной из версий, этот бессмысленный lock - это "оптимизация", раньше было поле private readonly object lockObj = new object();
    P.S. Поставьте таки autocomplete="off" в поле ввода капчи <input class="captcha" id="formElm_captcha" name="captcha" type="text" value=""> - задолбала она старые капчи предлагать.

    victor-homyakov, 23 Августа 2012

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

    +72

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    String displayName = report.getDisplayName();
                displayName.replace(
                        this.periodStartDateParamName,
                        this.getPeriodStartDateStr() );
                displayName.replace(
                        this.getPeriodEndDateParamName(),
                        this.getPeriodEndDateStr() );
                report.setDisplayName( displayName );

    Имитация бурной деятельности по замене подстрок.

    victor-homyakov, 17 Апреля 2012

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

    +63

    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
    public class ExtendFSDirectoryProvider {
        // skipped
        @Override
        public boolean equals(Object obj) {
            if (obj == this) {
                return true;
            }
            if (obj == null || !(obj instanceof FSDirectoryProvider)) {
                return false;
            }
    
            return indexName.equals(((ExtendFSDirectoryProvider) obj).indexName);
        }
    }

    Даже неважно, что автор делает лишнюю проверку на null - в instanceof указан другой класс! Копипаста детектед.

    victor-homyakov, 17 Апреля 2012

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

    +152

    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
    function sendForm() {
      var checksrole = document.getElementsByName("role");
      var i = 0, f = 0;
      while (f == 0 && i < checksrole.length) {
        if (checksrole[i].checked == true) {
          f = 1;
        }
        i++;
      }
      if (f == 0) {
        WindowUtils.popUpDialog("Пожалуйста, выберите роль пользователя", "WARN");
        return false;
      }
      return true;
    }

    Автор не догадывается о существовании типа boolean, о говорящих именах функций, о досрочном выходе из цикла и о возможностях используемых фреймворков (на странице использованы одновременно YUI - для вывода окна сообщения и Prototype - для отправки AJAX-запроса).

    victor-homyakov, 16 Апреля 2012

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