1. 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)
  2. PHP / Говнокод #5607

    +164

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

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

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

    zabuhailo, 09 Февраля 2011

    Комментарии (35)
  3. 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)
  4. 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)
  5. PHP / Говнокод #5604

    +162

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    <?php
        function is_get($id) {
            return (count(array_unique(str_split($id))) == 1);
        }
    ?>

    Гет или не гет?)

    hidespb, 09 Февраля 2011

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

    +162

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    SeismicDriver* SeismicSelectionDG::seismicDriver()
    {
      Exf2dMW* mw = Exf2dMW::getMW(this);
      _seismicDriver = mw->seismicDriver();
      if ( !mw || !_seismicDriver)
        return 0;
    
      return _seismicDriver;
    }

    Все тот же коллега китаец. Exf2dMW - класс главного окна приложения. Во-первых бесмыссленно проверять его на 0, потому что без него вообще бы ничего не работало, но и как видно проверяет его он все равно не там. Ну и проверка на 0 _seismicDrvier тоже лишняя. Итог никакие проверки не нужны да и вообще первую строку в методе можно перенести в конструктор а возвращать член класса _seismicDriver.

    kitaec, 09 Февраля 2011

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

    +146

    1. 1
    2. 2
    <div id="minobfl-page">
    										<div id="minobfl-page-content"><div style="margin: 10px 5px 5px;"><table style="border-bottom: 2px solid rgb(204, 204, 204);" align="center" border="0" cellpadding="4"><tbody><tr><td align="center"><div id="rg-map"><!--End Preload Script--><!--ImageReady Slices(r-v4_final.psd)--><table id="Table_01" border="0" cellpadding="0" cellspacing="0" height="323" width="600"><tbody><tr><td colspan="2"><img name="r_01" src="images/rmap/r_01.gif" alt="" usemap="#r_01_Map" border="0" height="84" width="81"></td><td colspan="3"><img id="r_02" src="images/rmap/r_02.gif" alt="" usemap="#r_02_Map" border="0" height="84" width="81"></td><td colspan="2"><img id="r_03" src="images/rmap/r_03.gif" alt="" usemap="#r_03_Map" border="0" height="84" width="81"></td><td><img id="r_04" src="images/rmap/r_04.gif" alt="" height="84" width="81"></td><td><img id="r_05" src="images/rmap/r_05.gif" alt="" height="84" width="81"></td><td><img id="r_06" src="images/rmap/r_06.gif" alt="" usemap="#r_06_Map" border="0" height="84" width="81"></td><td><img id="r_07" src="images/rmap/r_07.gif" alt="" usemap="#r_07_Map" border="0" height="84" width="114"></td></tr><tr><td rowspan="2"><img src="images/rmap/r_08.gif" alt="" height="85" width="47"></td><td><img id="r_09" src="images/rmap/r_09.gif" alt="" usemap="#r_09_Map" border="0" height="45" width="34"></td><td><img id="r_10" src="images/rmap/r_10.gif" alt="" usemap="#r_10_Map" border="0" height="45" width="34"></td><td><img id="r_11" src="images/rmap/r_11.gif" alt="" usemap="#r_11_Map" border="0" height="45" width="34"></td><td colspan="2"><img id="r_12" src="images/rmap/r_12.gif" alt="" usemap="#r_12_Map" border="0" height="45" width="34"></td><td rowspan="2"><img id="r_13" src="images/rmap/r_13.gif" alt="" usemap="#r_13_Map" border="0" height="85" width="60"></td><td rowspan="2"><img

    Не очень говнокод, но ЖИСТОКЕ HTML+JS. Исходный код страницы портала для военнослужащих (http://dom.mil.ru/). Это - только 1/20, если не меньше. Сколько обезьян они наняли столько печатать?

    RaZeR, 09 Февраля 2011

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

    +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
    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
    //...
    	CString signature(pMsg->clipEvent.signature);
    	int indx = signature.Find('-');
    	if(!indx)
    		signature.Delete(indx);
    	indx = signature.Find('-');
    	pEvent->eventData.signature.doorNum = _ttoi(signature.Left(indx));
    	signature.Delete(0, indx+1);
    	indx = signature.Find('-');
    	pEvent->eventData.signature.eventType = _ttoi(signature.Left(indx));
    	signature.Delete(0, indx+1);
    	indx = signature.Find('-');
    	pEvent->eventData.signature.eventID = _ttoi(signature.Left(indx));	
    	signature.Delete(0, indx+1);
    	indx = signature.Find('-');
    	pEvent->eventData.signature.itemNumber = _ttoi(signature.Left(indx));	
    	signature.Delete(0, indx+1);
    	indx = signature.Find('-');
    	CString dateTimeStr;
    	dateTimeStr	= signature.Mid(5, 2);
    	dateTimeStr += '/';
    	dateTimeStr += signature.Mid(8, 2);
    	dateTimeStr += '/';
    	dateTimeStr += signature.Left(4);
    	dateTimeStr += ' ';
    	dateTimeStr += signature.Mid(11, 2);
    	dateTimeStr += ':';
    	dateTimeStr += signature.Mid(14, 2);
    	dateTimeStr += ':';
    	dateTimeStr += signature.Mid(17, 2);
    	pEvent->eventData.signature.eventDateTime = DEM_getTimeDateStampFromTimeDateString(dateTimeStr);
    	signature.Delete(0, 20);
    	pEvent->eventData.signature.cameraIndex = _ttoi(signature);
    //...

    инициализация числовых переменных из строки с заранее известным форматом...
    так как автор "кончал на MFC", с функцией sscanf западло было работать

    ShuraKotov, 09 Февраля 2011

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

    +159

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    <?php
    //////////
    static function AddKeyDis($meta_key,$meta_dis=null){
    	   if(is_array($meta_key)){
                                   return self::$result=array("meta_key"=>$meta_key['meta_key'],"meta_dis"=>$meta_key['meta_dis']);
    	   }elseif($meta_dis!==null){
    	             return self::$result=array("meta_key"=>$meta_key,"meta_dis"=>$meta_dis);
    	   }
    	   return null;
       }
    //////////
    ?>

    эх =)

    Zho, 09 Февраля 2011

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

    +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
    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
    // Часть первая. Объявления. Exceptions.hpp
    
    template <typename E>
    struct ExeptionKeeper 
    {
        E * exptn;
        ExeptionKeeper(E * ex) 
        {
            exptn = ex;
        }
        ~ExeptionKeeper()
        {
            if(exptn != NULL )
            {
                delete exptn;
            }
        }
        E * operator -> () 
        { 
            return exptn; 
        }
    };
    
    #define EX_TRY(XX) try { XX }
    #define EX_CATCH(TT, NAME, XX) catch (TT *_ex) { ExeptionKeeper<TT> NAME(_ex);  XX }
    
    /// Часть вторая. Использование. ModelsHelper.cpp
    
    .... // код
            EX_TRY
            (
               ............
                 TestParams(args); // кидает new ParamsException в случае неудачи
               ............
                 TestFunctions(funclist); // Кидает new FuncsException ... 
               ............
               //// тут еще есть вызовы, кидающие исключения
               ............
            ) 
            EX_CATCH
            (   ParamsException, exp,
                GLogger(levelerror).Log("Invalid params for model ", exp->model(), " [", exp->paramlist().str(), "]");
            ) 
            EX_CATCH
            (   FuncsException, exp,
                GLogger(levelerror).Log("Invalid functions for model ", exp->model(), " [", exp->funclist().str(), "]");
            ) 
            EX_CATCH
            (   LevelsException, exp,
                GLogger(levelerror).Log("Invalid levels for model ", exp->model(), " [", exp->levelslist().str(), "]");           
            ) 
            EX_CATCH
            (    .... , exp,
                ........
            )
    .... // код

    И снова на тему исключений.
    Прислал приятель. Какой-то софт для аэропортов.
    Комменты на русском мои.

    ossa, 09 Февраля 2011

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