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

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

    +79

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    private double findVar(String vname) throws InterpreterException {
        if (!Character.isLetter(vname.charAt(0))) {
            handleErr(SYNTAX);
            return 0.0;	// ?!
        }
        return vars[Character.toUpperCase(vname.charAt(0))-'A'];
    }

    dwinner, 10 Июня 2011

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

    +126

    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
    private string ReadFile(string filePath)
    {
        string fileText = string.Empty;
        int openAttempts = 0;
        try
        {
            using (FileStream fs = File.Open(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
            {
                using (StreamReader sr = new StreamReader(fs, Encoding.GetEncoding(1252)))
                {
                    fileText = sr.ReadToEnd();
                    if (!sr.EndOfStream)
                    {
                        sr.Close();
                        fs.Close();
                        throw new Exception();
                    }
                }
            }
        }
        catch (Exception ex)
        {
            //Throw an error if the number of attempts is equal to the number of configured retries
            if (openAttempts == 20)
                throw new Exception(ex.Message);
            else
            {
                openAttempts += 1;
                Thread.Sleep(1000); //Put the thread to sleep for the configured amount of time
                ReadFile(filePath);
            }
        }
    
        return fileText;
    }

    Тут все, и управление исключениями, и бессмысленная рекурсия, и глупые ошибки. Про то, что это можно было заменить на одну строчку я молчу даже.

    Jabberwok, 10 Июня 2011

    Комментарии (13)
  4. Куча / Говнокод #6886

    +129

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    \begin{equation*}
    \begin{split}
      \Delta B_m^{(\text{Т})} &= \left(\left(\frac{\upmu_0N}{2L}\left(\frac{\frac{1}{2}L - z}{\sqrt{R^2 + (\frac{1}{2}L - z)^2}} + \frac{\frac{1}{2}L + z}{\sqrt{R^2 + (\frac{1}{2}L + z)^2}}\right)\Delta I\right)^2 + \right.\\
      &+ \left(\frac{\upmu_0NI_mD}{8L}\left(\frac{\frac{1}{2}L - z}{\sqrt{(\frac{D^2}{4} + (\frac{1}{2}L - z)^2)^3}} + \frac{\frac{1}{2}L + z}{\sqrt{(\frac{D^2}{4} + (\frac{1}{2}L + z)^2)^3}}\right)\Delta D\right)^2 + \\
      &+ \left(\frac{\upmu_0NI_m}{4L^2}\left(\frac{L(\frac{1}{2}L - z)^2}{\sqrt{(R^2 + (\frac{1}{2}L - z)^2)^3}} + \frac{L(\frac{1}{2}L + z)^2}{\sqrt{(R^2 + (\frac{1}{2}L + z)^2)^3}} - \right.\right. \\
      &- \left.\left.\frac{2z}{\sqrt{R^2 + (\frac{1}{2}L - z)^2}} + \frac{2z}{\sqrt{R^2 + (\frac{1}{2}L + z)^2}}\right)\Delta L\right)^2 + \\
      &+ \left(\frac{\upmu_0NI_m}{2L}\left(\frac{(\frac{1}{2}L - z)^2}{\sqrt{(R^2 + (\frac{1}{2}L - z)^2)^3}} - \frac{(\frac{1}{2}L + z)^2}{\sqrt{(R^2 + (\frac{1}{2}L + z)^2)^3}} - \right.\right. \\
      &- \left.\left.\left.\frac{1}{\sqrt{R^2 + (\frac{1}{2}L - z)^2}} + \frac{1}{\sqrt{R^2 + (\frac{1}{2}L + z)^2}}\right)\Delta z\right)^2 \right)^{\frac{1}{2}}
    \end{split}
    \end{equation*}

    LaTeX

    mityada, 07 Июня 2011

    Комментарии (13)
  5. PHP / Говнокод #6869

    +171

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    <?php
    
    $usr  = $_POST['user'];
    $usr = mysql_escape_string($usr);
    
    $query = "SELECT * FROM $admins WHERE name = '".$_POST['user']."'";
    $lst = @mysql_query($query);

    Заглянул в упомянутую ниже Esay Engne Site CMS
    Несколько строк кода пропустил, для простоты чтения, на эту конструкцию пропущенное никак не влияло.

    yasenhui, 05 Июня 2011

    Комментарии (13)
  6. Pascal / Говнокод #6797

    +94

    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
    procedure rayxtriangle(Xa,Ya,Za, {Точка отправления луча}
                                        X1,Y1,Z1,X2,Y2,Z2,X3,Y3,Z3 : real; {Координаты полигона (триангла)}
                                        Vx,Vy,Vz : real;{Вектор направления луча} Var Xc,Yc,Zc : real;{Точка пересечения}
                                        bol : boolean {Для проверки пересечения триангла});
    Var A,B,C,D : real;
          k : real;
          ac1,ac2,ac3 : real;
    begin
      A:=(Y2-Y1)*(Z3-Z1)-(Z2-Z1)*(Y3-Y1); //Вычисляем вектор нормали к треугольному полигону (векторное произведение)
      B:=(Z2-Z1)*(X3-X1)-(X2-X1)*(Z3-Z1);
      C:=(X2-X1)*(Y3-Y1)-(Y2-Y1)*(X3-X1);
      D:=-A*X1-B*Y1-C*Z1;
      k:=-(A*Xa+B*Ya+C*Za+D)/(A*Vx+B*Vy+C*Vz); //поскольку вектора луча (Vx Vy Vz) и вектор с даной
                                                                                  //точки к точке пересечения (Xc-Xa, Yc-Ya, Zc-Za) - колинеарны
                                                                                  //ето соотношение выведено мною, обьяснение было раньше (в предыдущем ответе)
      Xc:=k*Vx+Xa; //Вычисляем точку пересечения луча с полигоном
      Yc:=k*Vy+Ya;
      Zc:=k*Vz+Za;
                            //здесь проверяем лежыт ли даная точка в треугольном полигоне
                            //ac1,ac2,ac3 арккосинусы углов между векторами с точки пересечения (Xc Yc Zc)
                            //к вершинам треугольника (из скалярного произведения) 
                            //Для других полигонов (4,5,6... и т.д. угольных) надо побольше вычислений 
      ac1:=arccos(((x1-xc)*(x2-xc)+(y1-yc)*(y2-yc)+(z1-zc)*(z2-zc))/(sqrt(sqr(x1-xc)+sqr(y1-yc)+sqr(z1-zc))*sqrt(sqr(x2-xc)+sqr(y2-yc)+sqr(z2-zc))));
      ac2:=arccos(((x2-xc)*(x3-xc)+(y2-yc)*(y3-yc)+(z2-zc)*(z3-zc))/(sqrt(sqr(x2-xc)+sqr(y2-yc)+sqr(z2-zc))*sqrt(sqr(x3-xc)+sqr(y3-yc)+sqr(z3-zc)))); 
      ac3:=arccos(((x3-xc)*(x1-xc)+(y3-yc)*(y1-yc)+(z3-zc)*(z1-zc))/(sqrt(sqr(x3-xc)+sqr(y3-yc)+sqr(z3-zc))*sqrt(sqr(x1-xc)+sqr(y1-yc)+sqr(z1-zc)))); 
      if (ac1+ac2+ac3=pi) then bol:=true else bol:=false; //Если сума етих углов=360 градусов значит точка в треугольнике
      //Если точка пересечения найдена тогда bol=true и ее координаты Xc Yc Zc                              
    end;

    А всё потому, что векторную алгебру надо знать, любить и уважать, ибо иначе такая хрень выходит.
    Источник: http://www.gamedev.ru/code/forum/?id=148128

    TarasB, 31 Мая 2011

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

    +174

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    else if(!in_array($format,$fmt)){
    		$error = 'Блядина. Что за формат?';
    	}
    	else if(in_array($format,$fmt)){
    		    move_uploaded_file($_FILES['user_avatar']['tmp_name'], $uploadfile);
    	}

    stuffort, 30 Мая 2011

    Комментарии (13)
  8. PHP / Говнокод #6788

    +163

    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
    /**
       * Get or instance self object
       *
       * @return self object
       */
      public static function get_object () {
        // call as static
        static $storage;
        // check inited object
        if ( !isset($storage) ) {
          // init object
          $storage = new self();
        }
        // return object
        return is_object($storage) ? $storage : false;
      }

    NetCat не перестает удивлять.
    Вы только посмотрите на последнюю строчку метода
    :D

    miraage, 30 Мая 2011

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

    +165

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    //This is an optimization. We assume than no step can take more than one year.
      if($time_limit > 0)
       $end_time = time() + $time_limit;
      else
       $end_time = time() + 365*24*3600; // One year

    Источник: исходники битрикса, (/bitrix/modules/iblock/classes/general/cml2.php). Код используется при импорте из 1с.

    leonard, 30 Мая 2011

    Комментарии (13)
  10. C++ / Говнокод #6764

    +175

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    if(v.isArray)value->setText("Array");
        else value->setText(v.value.value("value").value<QString>());
        if(v.value.value("color",QColor()).value<QColor>()!=QColor())
        {
            value->setBackgroundColor(v.value.value("color").value<QColor>());
        }

    Value, value, value, value, value, value, value ...

    petersvp, 26 Мая 2011

    Комментарии (13)
  11. Ruby / Говнокод #6751

    −99

    1. 1
    2. 2
    3. 3
    4. 4
    respond_with_error("Lat can't be blank.", :unprocessable_entity) and return if params[:lat].blank?
        respond_with_error("Lon can't be blank.", :unprocessable_entity) and return if params[:lon].blank?
        respond_with_error("Lat is not a number.", :unprocessable_entity) and return if !is_float?(params[:lat])
        respond_with_error("Lon is not a number.", :unprocessable_entity) and return if !is_float?(params[:lon])

    индусский кот от Фет Фрумоса

    sumskyi, 25 Мая 2011

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