1. C++ / Говнокод #5614

    +169

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    class  SeismicDriver {
      void   set2DVolume    (GlData2DVol* vol = 0, bool reserv = false);
      GlData2DVol*   _glData2DVol;      /**< Seismic 2D Line */
    }
    
    void SeismicDriver::set2DVolume  (GlData2DVol* vol, bool reserv)
    {
      _glData2DVol = vol;
    }

    Наш подопытный китаец очень предусмотрительный. Если в будущем вдруг случится, что функции понадобится второй параметр типа bool - опа! - он уже есть :)

    kitaec, 09 Февраля 2011

    Комментарии (15)
  2. JavaScript / Говнокод #5613

    +164

    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
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    aLength = V_Array.length;
    if(aLength == 1) { 
     if(V_Array[0][0]=='true'){
      document.MainListForm.list_DV[0].checked = true;
      document.MainListForm.list_NE[0].checked = true;
     }else{
      document.MainListForm.list_DV[0].checked = false;
      document.MainListForm.list_NE[0].checked = false;
     }
     if(V_Array[0][1]=='true'){
      document.MainListForm.list_DV[1].checked = true;
      document.MainListForm.list_NE[1].checked = true;
     }else{
      document.MainListForm.list_DV[1].checked = false;
      document.MainListForm.list_NE[1].checked = false;
     }
     if(V_Array[0][2]=='true'){
      document.MainListForm.list_DV[2].checked = true;
      document.MainListForm.list_NE[2].checked = true;
     }else{
      document.MainListForm.list_DV[2].checked = false;
      document.MainListForm.list_NE[2].checked = false;
     }
     if(V_Array[0][3]=='true'){
      document.MainListForm.list_DV[3].checked = true;
      document.MainListForm.list_NE[3].checked = true;
     }else{
      document.MainListForm.list_DV[3].checked = false;
      document.MainListForm.list_NE[3].checked = false;
     }
     return;
    }
    
    for (i = 0; i < aLength ; i++) {
     if(V_Array[i][0]=='true'){
      document.MainListForm[i].list_DV[0].checked = true;
      document.MainListForm[i].list_NE[0].checked = true;
     }else{
      document.MainListForm[i].list_DV[0].checked = false;
      document.MainListForm[i].list_NE[0].checked = false;
     }
     if(V_Array[i][1]=='true'){
      document.MainListForm[i].list_DV[1].checked = true;
      document.MainListForm[i].list_NE[1].checked = true;
     }else{
      document.MainListForm[i].list_DV[1].checked = false;
      document.MainListForm[i].list_NE[1].checked = false;
     }
     if(V_Array[i][2]=='true'){
      document.MainListForm[i].list_DV[2].checked = true;
      document.MainListForm[i].list_NE[2].checked = true;
     }else{
      document.MainListForm[i].list_DV[2].checked = false;
      document.MainListForm[i].list_NE[2].checked = false;
     }
     if(V_Array[i][3]=='true'){
      document.MainListForm[i].list_DV[3].checked = true;
      document.MainListForm[i].list_NE[3].checked = true;
     }else{
      document.MainListForm[i].list_DV[3].checked = false;
      document.MainListForm[i].list_NE[3].checked = false;
     }
    }

    типично китайский привет из реал лайф проект

    kuku, 09 Февраля 2011

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

    +162

    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
    class GlData2DLine
    {
      virtual std::vector<Vec2d> getDecimatedPoints();
     protected:
      std::vector<Vec2d> c_decimated_points;
    }
    
    std::vector<Vec2d> GlData2DLine::getDecimatedPoints()
    {
      return c_decimated_points;
    }
    
    class GlData2DLineOD : public GlData2DLine
    {
      virtual std::vector<Vec2d> getDecimatedPoints();
    }
    
    std::vector<Vec2d> GlData2DLineOD::getDecimatedPoints()
    {
      return c_decimated_points;
    }

    Наш любимый китаец увлекся ООП и полиморфизмом что забыл очевидное.

    kitaec, 09 Февраля 2011

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

    +77

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    public void log(String msg) {
            try {
                StringBuffer sb = new StringBuffer(), sb2 = new StringBuffer();
                sb.append(getDeviceId()).append(": ").append(msg).append('\n');
                sb2.append("^^ ").append(sb);
                System.out.println(sb2.toString()); // Вывод в консоль
                platform.logEvent(msg.getBytes()); // Вывод в лог трубы
            } catch (Exception e) {
                // Ignore
            }
        }

    Проект под BlackBerry. Каменты мои.
    Ниасилил в чем соль двух стрингбуферов О_о

    Gsom11, 09 Февраля 2011

    Комментарии (17)
  5. JavaScript / Говнокод #5610

    +166

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    if(VisabilityOnOff==true){
    	   document.SearchForm.searchoption[0].disabled=true;
    	   document.SearchForm.searchoption[1].disabled=true;
    }else if(VisabilityOnOff==false){
    	   document.SearchForm.searchoption[0].disabled=false;
    	   document.SearchForm.searchoption[1].disabled=false;
    }

    kuku, 09 Февраля 2011

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

    +92

    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
    I:=1;
        while I<=High(Sockets) do
         begin
          if FD_IsSet(Sockets[I],FDSet) then
           if Recv(Sockets[I],…)<=0 then
            begin
             // Связь разорвана, надо закрыть сокет
             // и удалить его из массива
             CloseSocket(Sockets[I]);
             for J:=I to High(Sockets)-1 do
              Sockets[J]:=Sockets[J+1];
             Dec(I);
             SetLength(Sockets,Length(Sockets)-1)
            end
           else
            begin
             // Получены данные от клиента, надо ответить
             Send(Sockets[I],…)
            end;
          Inc(I)
         end;

    На первый взгляд может показаться странным, почему для перебора элементов массива используется цикл while, а не for. Но в дальнейшем мы увидим, что размер массива во время выполнения цикла может изменяться. Особенность же цикла for заключается в том, что его границы вычисляются один раз и запоминаются в отдельных ячейках памяти, и дальнейшее изменение значений выражений, задающих эти границы, не изменяет эти границы. В нашем примере это приведёт к тому, что в случае уменьшения массива цикл for не остановится на реальной уменьшившейся длине, а продолжит цикл по уже не существующим элементам, что приведёт к трудно предсказуемым последствиям. Поэтому в данном случае лучше использовать цикл while, в котором условие продолжения цикла полностью вычисляется при каждой его итерации.

    TarasB, 09 Февраля 2011

    Комментарии (51)
  7. JavaScript / Говнокод #5608

    +165

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if (aNew=='true'){
    	  path = './page.html?show='+ashow+'&avail='+aavail+'&page='+page+'&size='+asize+'&order='+aorder+'&ordera='+aordera+'&refresh='+arefresh+'&letter='+aletter+'&sortcount='+asortcount+'&search=off&new=true';
    }else{
    	  path = './page.html?show='+ashow+'&avail='+aavail+'&page='+page+'&size='+asize+'&order='+aorder+'&ordera='+aordera+'&refresh='+arefresh+'&letter='+aletter+'&sortcount='+asortcount+'&search=off&new=false';
    }

    разница в &new=true/false
    Код из большого серьезного продакшен проекта.

    kuku, 09 Февраля 2011

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

    +164

    1. 1
    $update = !empty($id) and $id > 0;

    Вопреки ожиданиям автора, выражение $id > 0 вообще никогда не принимается во внимание.
    /* Ознакомьтесь с приоритетом операций */
    Сначала отработает $update = !empty($id)
    потом значение из $update будет сравниваться с $id > 0 и результат сравнения никуда не попадёт.

    Рекомендация: используйте && вместо оператора "and".

    zabuhailo, 09 Февраля 2011

    Комментарии (35)
  9. C++ / Говнокод #5606

    +161

    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
    /**
     * Standard QWidget Constructor
     */
    SeismicSelectionDG::SeismicSelectionDG(QWidget *parent) 
      : QDialog(parent), ui(new Ui::SeismicSelectionDG)
    {
    ...
    }
    
    /**
     * Destructor
     */
    SeismicSelectionDG::~SeismicSelectionDG()
    {
      if(ui) delete ui;
    }
    
    /**
     * Set title to dialog box
     * @param title The title for dialog box
     */
    void SeismicSelectionDG::setDialogTitle(const QString& title)
    {
      QDialog::setWindowTitle(title);
    }

    Обратим внимание как мой коллега китаец тщательно документирует код. метод setDialogTitle - в особенности. А учитывая что QDialog::setWindowTitle - библиотечный метод, необходимость оборачивать его в свой метод полностью отсутствует. Также глупость в деструкторе - для delete необязательно проверять указатель на 0.

    kitaec, 09 Февраля 2011

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

    +161

    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
    // из объявления класса
    ...
        float   _x_3DMin;         /**< Min X value */
        float   _x_3DMax;         /**< Max X value */
        float   _z_3DMin;         /**< Min Z depth value */
        float   _z_3DMax;         /**< Max Z depth value */
    
        /* 2D seismic variables */
        float   _x_2DMin;         /**< Min X value */
        float   _x_2DMax;         /**< Max X value */
        float   _z_2DMin;         /**< Min Z depth value */
        float   _z_2DMax;         /**< Max Z depth value */
    
        /* No seismic selection variables */
        float   _xMin;         /**< Min X value */
        float   _xMax;         /**< Max X value */
        float   _zMin;         /**< Min Z depth value */
        float   _zMax;         /**< Max Z depth value */
    
    ...
    
    void SeismicSelectionDG::initMembers()
    {
      // initialise values
      _x_3DMin = 0.0F;
      _x_3DMax = 0.0F;
      _z_3DMin = 0.0F;
      _z_3DMax = 0.0F;
    
      _x_2DMin = 0.0F;
      _x_2DMax = 0.0F;
      _z_2DMin = 0.0F;
      _z_2DMax = 0.0F;
    
      _xMin = 0.0F;
      _xMax = 0.0F;
      _zMin = 0.0F;
      _zMax = 0.0F;
    
      ...
    }

    Ну и весь остальной код состоит из этих говно-паттернов. Об абстракциях товарищ понятия не имеет.

    kitaec, 09 Февраля 2011

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