1. Лучший говнокод

    В номинации:
    За время:
  2. C++ / Говнокод #4602

    +157

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    void Scene3D::DrawTriangle(const Point3D &A, const Point3D &B, const Point3D &C, const Color& color)
    {
            // ---------------------------------------------------------------------------------------
            // вспомогательные вычисления
            // нормаль
            const Vector3D& n = (B - A) ^ (C - A);
    
            // ...
    
            // центр треугольника
            const Point3D& medium = (A + B + C) / 3.0;

    Руки как-то привыкли const TypeName& variableName набирать в определении параметров методов.
    И случайно набралось такое (строки 6, 11)

    Операторы (+, -, ^, /) над векторами возвращают Vector3D, не const Vector3D&.

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

    Но такое ведь не должно работать!
    Результат вычисления в правой части присваивания структура, то есть она возвращается в стеке. Если бы я присвоил её какой-то локальной переменной, для которой выделена память в стеке текущей функции, то она бы перед удалением скопировалась в локальную переменную. А так получается что ссылка (n, medium) указывает куда-то на стек, где временно хранится возвращенное оператором значение. И при следующем вызове любой функции эта область стека должна перезаписаться.

    burdakovd, 12 Ноября 2010

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

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    if (!bNextPageVisited)
    this->button(QWizard::NextButton)->setEnabled(false);
    if (bNextPageVisited)
    this->button(QWizard::NextButton)->setEnabled(true);

    Упячка мозга?..

    des-1008d, 12 Ноября 2010

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

    +164

    1. 1
    2. 2
    3. 3
    4. 4
    double *ptr = new (nothrow) double[n];
    if (ptr) {
    //....
    } else throw bad_alloc();

    Sanya_M, 11 Ноября 2010

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

    +79

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    public class Daemon {
       //...
    
       /**
       * Constant defines url pattern for register
       */
       private static final String S_ID_D_URL_S_STRATEGY_CLASS_S_STATE_S = "%s?id=%d&url=%s&strategyClass=%s&state=%s";
     
       //...
    }

    ....

    nikelin, 11 Ноября 2010

    Комментарии (7)
  6. Куча / Говнокод #4561

    +138

    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
    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
    38. 38
    39. 39
    function StripLeadingComma(str)
      str = Ltrim(str)
      if len(str) > 0 then
        if Left(str,1) = "," then  str = Mid(str,2)
      end if
      if len(str) > 0 then
        if Left(str,1) = "," then  str = Mid(str,2)
      end if
      if len(str) > 0 then
        if Left(str,1) = "," then  str = Mid(str,2)
      end if
      if len(str) > 0 then
        if Left(str,1) = "," then  str = Mid(str,2)
      end if
      StripLeadingComma = str
    end function
    
    function StripTrailingComma(str)
      str = rtrim(str)
      if len(str) > 0 then
        if Right(str,1) = "," then  str = Left(str,len(str)-1)
      end if
      if len(str) > 0 then
        if Right(str,1) = "," then  str = Left(str,len(str)-1)
      end if
      if len(str) > 0 then
        if Right(str,1) = "," then  str = Left(str,len(str)-1)
      end if
      if len(str) > 0 then
        if Right(str,1) = "," then  str = Left(str,len(str)-1)
      end if
      if len(str) > 0 then
        if Right(str,1) = "," then  str = Left(str,len(str)-1)
      end if
      if len(str) > 0 then
        if Right(str,1) = "," then  str = Left(str,len(str)-1)
      end if
      StripTrailingComma = str
    end function

    Классика жанра на production. ASP, VBScript.

    Seth, 08 Ноября 2010

    Комментарии (7)
  7. C# / Говнокод #4455

    +122

    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
    24. 24
    public static bool IsConnectedToInternet
    {
        get
        {
            // сервер для пинга
            Uri url = new Uri("www.google.com"); 
            // его перевод в строку
            string pingurl = string.Format("{0}", url.Host); 
            string host = pingurl;
            // возвращаемое значение
            bool result = false; 
            Ping p = new Ping();
            try
            {
                PingReply reply = p.Send(host, 3000);
                if (reply.Status == IPStatus.Success)
                // если все ок, то вернем true                
                   return true;
            }
            catch { }
            // в этом случае возвращается false
            return result;
        }
    }

    Взято с http://msgeeks.ru/?artid=42 - "Пинг сервера на С#".
    Особенно порадовал перевод url.Host в строку))

    inso, 26 Октября 2010

    Комментарии (7)
  8. Python / Говнокод #4451

    −100

    1. 1
    2. 2
    3. 3
    s = 'blablabla'
    if s[:7] <> 'http://':
       s = 'http://%s' % s

    blednolicui, 26 Октября 2010

    Комментарии (7)
  9. PHP / Говнокод #4446

    +168

    1. 1
    2. 2
    $Y=date('Y'); $m=date('m'); $d=date('d');$G=date('G');$i=date('i');$s=date('s'); 
    $tdate=mktime($G,$i,$s,$m,$d,$Y);

    fork, 26 Октября 2010

    Комментарии (7)
  10. PHP / Говнокод #4445

    +157

    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
    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
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    ...
    
    if ($kpp['id_complect'] == '14') {
    $smarty->assign('sost', $kpp['tit']);
    
    }
    if ($kpp['id_complect'] == '54') {
    $smarty->assign('dvig', $kpp['tit']);
    
    }
    
    if ($kpp['id_complect'] == '17') {
    $smarty->assign('kpp', $kpp['tit']);
    
    }
    if ($kpp['id_complect'] == '16') {
    $smarty->assign('priv', $kpp['tit']);
    
    }
    if ($kpp['id_complect'] == '18') {
    $smarty->assign('weel', $kpp['tit']);
    
    }
    if ($kpp['id_complect'] == '19') {
    $smarty->assign('ras', $kpp['tit']);
    
    }
    if ($kpp['id_complect'] == '101') {
    $smarty->assign('color', $kpp['tit']);
    
    }
    if ($kpp['id_complect'] == '15') {
    $smarty->assign('torg', $kpp['tit']);
    
    }
    
    if ($kpp['id_complect'] == '96') {
    $smarty->assign('ls', $kpp['tit']);
    
    }
    
    if ($kpp['id_complect'] == '100') {
    $smarty->assign('vin', $kpp['tit']);
    
    }
    
    
    ...

    и так ооочень много...
    гениальный прогер наверно писал.

    yezhoff, 25 Октября 2010

    Комментарии (7)
  11. C# / Говнокод #4425

    +117

    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
    public ActionResult Register(RegisterInformation ri, string myCaptcha, HttpPostedFileBase image)
    {
        if (ri.Name == null) ModelState.AddModelError("my", "Введите имя");
        if (ri.Name != null && ri.Name.Length > 32) ModelState.AddModelError("my", "Слишком длинное имя, максимум 32 символа");
        if (ri.Password == null) ModelState.AddModelError("my", "Введите пароль");
        if (ri.Password != null && ri.Password.Length > 32) ModelState.AddModelError("my", "Слишком длинный пароль, максимум 32 символа");
        if (ri.Email == null) ModelState.AddModelError("my", "Введите адрес почты");
        if (ri.Email != null && ri.Email.Length > 32) ModelState.AddModelError("my", "Слишком длинная почта, максимум 32 символа");
        if (ri.Phone == null) ModelState.AddModelError("my", "Введите телефон");
        if (ri.Captcha == null) ModelState.AddModelError("my", "Введите символы с картинки");
        if (ri.Email != null && !IsValid.Mail(ri.Email)) ModelState.AddModelError("my", "Невалидный email");
        long phone;
        if (!long.TryParse(ri.Phone, out phone)) ModelState.AddModelError("my", "Некорректный формат телефона");
        if (ri.Captcha != null&&!CaptchaHelper.VerifyAndExpireSolution(HttpContext, myCaptcha, ri.Captcha)) ModelState.AddModelError("my", "Неверно введены символы с картинки");
    
        if (ModelState.IsValid)
        {
            ...
    }

    Проверяем модель на ошибки

    HIMen, 23 Октября 2010

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