1. 1C / Говнокод #21058

    −103

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    &НаСервере
     Процедура ОтсортироватьЧТ()
         ТЧсерНомера = Объект.СерийныеНомера;
     	 ТЧсерНомера.Сортировать("IDСтрокиТЧМатериалы Возр, СерийныйНомер Убыв");
     КонецПроцедуры // ()

    blMbl, 01 Сентября 2016

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

    +410

    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
    CBroadcastPropPP::CBroadcastPropPP()
    {
    m_bAdminMode = FALSE;
    
    m_aProps.Add(new CRPProp_01);
    m_aProps.Add(new CRPProp_02);
    m_aProps.Add(new CRPProp_021);
    m_aProps.Add(new CRPProp_022);
    m_aProps.Add(new CRPProp_03);
    m_aProps.Add(new CRPProp_05);
    m_aProps.Add(new CRPProp_06);
    m_aProps.Add(new CRPProp_07);
    }
    
    #define PPPos_Dir 0
    #define PPPos_Recursive 1
    #define PPPos_Masks 2
    #define PPPos_MaxSize 3
    #define PPPos_Archive 4
    #define PPPos_Subject 5
    #define PPPos_Types 6
    #define PPPos_MaxRcpt 7
    #define PPPos_BCC 8
    
    void CBroadcastPropPP::Initialize(IRegistrato​r* pRegistrator)
    {
    AFX_MANAGE_STATE(AfxGetStaticModuleState(​ ));
     m_pRegistrator=pRegistrator;
    
    ((CRPProp_01*)(m_aProps[PPPos_Dir]))->_I​nitialize(m_pRegistrator->m_sStartupPath,​ m_pRegistrator);
    ((CRPProp_02*)(m_aProps[PPPos_Recursive]​))->_Initialize(m_pRegistrator->m_sStart​upPath, m_pRegistrator);
    ((CRPProp_021*)(m_aProps[PPPos_Masks]))-​>_Initialize(m_pRegistrator->m_sStartupP​ath, m_pRegistrator);
    ((CRPProp_022*)(m_aProps[PPPos_MaxSize])​)->_Initialize(m_pRegistrator->m_sStartu​pPath, m_pRegistrator);
    ((CRPProp_03*)(m_aProps[PPPos_Archive]))​->_Initialize(m_pRegistrator->m_sStartup​Path, m_pRegistrator);
    ((CRPProp_05*)(m_aProps[PPPos_Types]))->_​Initialize(&m_pRegistrator->m_DB,m_pRegistrator->m_s​StartupPath);
    ((CRPProp_06*)(m_aProps[PPPos_MaxRcpt]))​->_Initialize(m_pRegistrator->m_sStartup​Path, m_pRegistrator );
    ((CRPProp_07*)(m_aProps[PPPos_BCC]))->_I​nitialize(m_pRegistrator->m_sStartupPath,​ m_pRegistrator );
    }
    
    CBroadcastPropPP::~CBroadcastPropPP()
    {
    delete (CRPProp_01*)m_aProps[PPPos_Dir];
    delete (CRPProp_02*)m_aProps[PPPos_Recursive];
    delete (CRPProp_021*)m_aProps[PPPos_Masks];
    delete (CRPProp_022*)m_aProps[PPPos_MaxSize];
    delete (CRPProp_03*)m_aProps[PPPos_Archive];
    delete (CRPProp_05*)m_aProps[PPPos_Types];
    delete (CRPProp_06*)m_aProps[PPPos_MaxRcpt];
    delete (CRPProp_07*)m_aProps[PPPos_BCC];
    }

    «Вот что бывает, когда пишешь на C++, не зная, зачем нужны виртуальные деструкторы...

    классы CRPProp_0n - производные от общего базового класса. Вроде задумка неплохая, можно работать с их массивом, удобно. Но видимо, что-то не заладилось, почему-то их методы не вызывались (про виртуальные функции разработчик не знал)... И тут на выручку эмо-кодеру пришло приведение типов! Правда, про работу с массивом в цикле пришлось забыть...»


    Источник: http://emo-coders.livejournal.com/59977.html

    inkanus-gray, 01 Сентября 2016

    Комментарии (20)
  3. PHP / Говнокод #21031

    0

    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
    public static function getTree($version, $lang = 'en')
        {
            $pt_root = KbTree::findOne(($version == 'pt2') ?
                KbTree::NODE_PT2 : KbTree::NODE_PT3);
    
            $list = $pt_root
                ->children()
                ->andWhere(['root' => ($version == 'pt2') ? KbTree::NODE_PT2 : KbTree::NODE_PT3])
                ->andWhere(['visible' => 1, 'pub' => 1])
                ->orderBy('lft ASC')
                ->all();
    
            $tree = [$pt_root->id => []];
            $currentLevel = 1;
            $levelsIds[$currentLevel] = $pt_root->id;
            $dic = [];
    
            foreach($list as $key => $_node)
            {
                if(isset($_node->level, $_node->id))
                {
                    $dic[$_node->id][] = $_node->getTranslateMessage($lang);
    
                    $dic[$_node->id][] = $_node->getFullAlias();
    
                    $currentLevel = $_node->level;
    
                    switch($_node->level) {
                        case 2:
                            $tree[$levelsIds[1]][$_node->id] = [];
                            break;
                        case 3:
                            $tree[$levelsIds[1]][$levelsIds[2]][$_node->id] = [];
                            break;
                        case 4:
                            $tree[$levelsIds[1]][$levelsIds[2]][$levelsIds[3]][$_node->id] = [];
                            break;
                        case 5:
                            $tree[$levelsIds[1]][$levelsIds[2]][$levelsIds[3]][$levelsIds[4]][$_node->id] = [];
                            break;
                        case 6:
                            $tree[$levelsIds[1]][$levelsIds[2]][$levelsIds[3]][$levelsIds[4]][$levelsIds[5]][$_node->id] = [];
                            break;
                    }
    
                    $levelsIds[$currentLevel] = $_node->id;
    
                }
    
            }
    
            return [$tree[$pt_root->id], $dic];
    
        }

    Получение дерева каталогов от PHP middle developer

    Kilimangaro, 29 Августа 2016

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

    +5

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if (isset($response['initialize'])) {
    	$initialize = $response['initialize'];
    	unset($response['initialize']);
    	$response['initialize'] = $initialize;
    }

    cometchat
    (Как говорится, шаг вперед и два назад)

    slavavitrenko, 29 Августа 2016

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

    −1

    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
    if (COption::GetOptionString("vote", "VOTE_COMPATIBLE_OLD_TEMPLATE", "Y") == "N")
    	{
    		unset($arDisplayOptions[2]);
    		unset($arDisplayOptions[3]);
    		unset($arDisplayOptions[4]);
    		unset($arDisplayOptions[5]);
    		unset($arDisplayOptions[6]);
    	}
    	elseif ($old_module_version=="Y")
    	{
    		unset($arDisplayOptions[6]);
    	}
    	else
    	{
    		unset($arDisplayOptions[2]);
    		unset($arDisplayOptions[3]);
    		unset($arDisplayOptions[4]);
    		unset($arDisplayOptions[5]);
    	}

    bitrix/modules/vote/options.php:44

    maxyc, 29 Августа 2016

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

    −3

    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
    <?php
    abstract class Upload {//Клас загрузка файлов на сервер //Класс, который не имеет реализации.
    
        private $dir;//директория для загрузки
        private $mime_type;//Некий mime_type
    
        public function __construct($dir, $mime_type) {
            $this->dir = $dir;
            $this->mime_type = $mime_type;
        }
    
        public function UploadFile($file) {
            if (!$this->isSequrity($file)) return false;
            $dirupload = $_SERVER['DOCUMENT_ROOT']."/".$this->dir."/".$file['name'];
            return move_uploaded_file($file['tmp_name'], $dirupload);
        }
    
        protected function isSequrity($file) {
            $blacklist = array (".php", ".php3", ".php4", ".html", ".htm", ".exe", ".js", ".css");//Запрещено
            foreach ($blacklist as $item) {
                if (preg_match("/$item\$/i", $file["name"])) return false;
            }
            $type = $file["type"];//тип файла
            $mime_types = $this->mime_type;
            $i = 0;
            foreach ($mime_types as $k => $v) {
                if ($type == $v) break;//Если тип файла найден(равняется типу, что файл какого типа, то выходим из цикла.
                if ($i + 1 === count($this->mime_type)) return false;
                $i++;
            }
            $size = $file["size"];
            if ($size > 2048000) return false;
            return true;
        }
    }
    ?>

    Код мне прислал адепт пРуссакова. С вопросом, "че не раблотает?". Собственно орфография, пунктуация и стили сохранены. Если кто-то будет спрашивать "чем плохи видеокурсы?", просто скиньте линку на данный код.

    Keeper, 28 Августа 2016

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

    +102

    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
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    string sql = "select " + (sender == sbFind_Phone ? "distinct " : "") +
    									 "orders.id, orders.dat_add, users.family, orders.status, " +
    									 "clients.name, clients.phone, " +
    									 "orders.adress, orders.note_adress, orders.dat, orders.time_, orders.\"SUM\", orders.skidka, " +
    									 "factories.name, " +
    									 "drivers.family || ' ' || drivers.name, orders.actions, " +
    									 "orders.pay, orders.enter, clients.note, orders.website " + // website: 0 - сайт 1, 1 - сайт 2
    									 (
    										 bPrimeCost || bRolly ? ", orders.subitems || ';' || orders.actions || ';' " : ""
    										 ) +
    									 "from orders " +
    									 "left outer join users     on users.id     = orders.id_user_in " +
    									 "left outer join clients   on clients.id   = orders.id_client " +
    									 "left outer join factories on factories.id = orders.factory " +
    									 "left outer join drivers   on drivers.id   = orders.driver " +
    									 (
    										 bFrom_Site ? //---- поиск заказов с сайта ---------
    											 "where factory = " + Factorys[cbFactories.SelectedIndex - 1].id.ToString()
    											 : sender == sbMobil ? //---- поиск заказов, поступивших с моб./устройств
    												 "where '" + (bDataDelivery
    													 ? dataFrom.ToShortDateString() + "'<= dat     and dat     < '" + dtTo.AddDays(1).ToShortDateString() + "'"
    													 : // дата доставки попадает в интервал      или
    													 dataFrom.ToShortDateString() + "'<= dat_add and dat_add < '" + dtTo.AddDays(1).ToShortDateString() +
    													 "'" // дата приема заказа попадает в интервал
    													 ) +
    												 "  and (orders.note_adress containing 'Android' or orders.note_adress containing 'IOS')"
    												 : sender == sbFind_Phone ? //---- поиск по номеру телефона ------
    													 "where orders.id_client = " + ((id_client_Phone as int?)?.ToString() ?? "0")
    													 : sender == sbFind_Order // так быстрее
    														 ? //---- поиск заказов по номеру -------
    														 "where orders.id in (" + sOrders + ")"
    														 : "where '" + //---- поиск заказов по фильтрам  ----
    															 (bDataDelivery
    																 ? dataFrom.ToShortDateString() + "'<= dat     and dat     < '" + dtTo.AddDays(1).ToShortDateString() +
    																	 "'"
    																 : // дата доставки попадает в интервал      или
    																 dataFrom.ToShortDateString() + "'<= dat_add and dat_add < '" + dtTo.AddDays(1).ToShortDateString() +
    																 "'" // дата приема заказа попадает в интервал
    																 )
    															 + //---- вид оплаты --------------------
    															 (!chPayNal.Checked ? " and orders.pay != 0 " : "") + //  0 - нал.
    															 (!chPayOnl.Checked ? " and orders.pay != 1 " : "") + //  1 - онлайн
    															 (!chPayMt.Checked ? " and orders.pay != 3 " : "") + //  3 - моб/терминал
    															 (!chPayNull.Checked ? " and orders.pay != 2 " : "") //  2 - б/о
    
    															 + //---- откуда поступил ---------------
    															 (!chFromPhone.Checked ? " and orders.enter != 0 " : "") + //  0 - телефон
    															 (!chFromSite.Checked ? " and orders.enter != 1 " : "") + //  1 - сайт
    															 (!chFromClub.Checked ? " and orders.enter != 2 " : "") //  2 - delivery club
    															 +
    															 (rbTake.Checked
    																 ? " and orders.status = 0"
    																 : // принят
    																 rbKitchen.Checked
    																	 ? " and orders.status = 1"
    																	 : // на кухне
    																		 //                  rbReady.Checked ?   " and orders.status = 2":          // готов     - убрал, не хватает места
    																	 rbShip.Checked
    																		 ? " and orders.status = 3"
    																		 : // в пути
    																			 //                  rbDelive.Checked ?  " and orders.status = 4":          // доставлен - убрал, не хватает места
    																		 rbPay.Checked
    																			 ? " and orders.status = 5"
    																			 : // оплачен
    																			 rbCancel.Checked ? " and orders.status = 6" : "" // отменен
    																 )
    															 + // производство
    															 (cbFactories.SelectedIndex <= 0
    																 ? ""
    																 : " and factory = " + Factorys[cbFactories.SelectedIndex - 1].id.ToString()
    																 )
    															 + // акция
    															 (cbActions.SelectedIndex <= 0
    																 ? ""
    																 : " and substring(actions from 1 for " +
    																	 Actions[cbActions.SelectedIndex - 1].id.ToString().Length.ToString() + ") = '"
    																	 + Actions[cbActions.SelectedIndex - 1].id.ToString() + "'"
    																 )
    															 + // манагеры
    															 (cbManagers.SelectedIndex <= 0
    																 ? ""
    																 : " and orders.id_user_in = " + Managers[cbManagers.SelectedIndex - 1].id.ToString()
    																 )
    															 + // водители
    															 (cbDrivers.SelectedIndex <= 0
    																 ? ""
    																 : " and orders.driver = " + Drivers[cbDrivers.SelectedIndex - 1].id.ToString()
    																 )
    															 + // сайт заказа: первый(0) или второй(1)
    															 (rbSiteAll.Checked
    																 ? ""
    																 : " and orders.website = " +
    																	 (rbSitePirogu.Checked ? FLogo.LOGO_1 : FLogo.LOGO_2).ToString()
    																 )
    );

    Абсолютно коричневый код одного пожилого разработчика с 20-летним стажем и кандидатской степенью (прямо в классе формы).

    BigRussianSOS, 27 Августа 2016

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

    0

    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
    const int DD_GOOD = 1;
    const int DD_BAD = 2;
    const int DD_BAD_VERT = 3;
    auto segStatus = [&DD_GOOD, &DD_BAD, &DD_BAD_VERT](SomeClass* seg, EXTR ext, coord pickPt, double pickElev) -> int
    {
    	Pt&			pt = seg->ExtremePt(ext);
    	Line&	line = seg->ExtremeLn(ext);
    	coord			btPt = seg->GetExtremeWallPos(ext);
    
    	if (pt.GetCoord() != pickPt && btPt != pickPt)
    	{
    		return DD_BAD;
    	}
    
    	if (pt.pairGuid == GUID_NULL && EQ(pt.GetHeight(), pickElev))
    	{
    		return DD_GOOD;
    	}
    
    	if (!line.IsNonVert())
    	{
    		return DD_BAD;
    	}
    
    	double e1 = line.m_startPt.GetHeight();
    	double e2 = line.m_endPt.GetHeight();
    	
    	if (e1 < e2 && e1 < pickElev && pickElev < e2)
    	{
    		return DD_GOOD;
    	}
    	
    	if (e2 < e1 && e2 < pickElev && pickElev < e1)
    	{
    		return DD_GOOD;
    	}
    	
    	return DD_BAD_VERT;
    };

    Когда не умеешь пользоваться энумами.

    yog_muskrat, 26 Августа 2016

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

    +506

    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
    if(isset($db_array["reference"]) && is_array($db_array["reference"]))
    		$ref = $db_array["reference"];
    	elseif(isset($db_array["REFERENCE"]) && is_array($db_array["REFERENCE"]))
    		$ref = $db_array["REFERENCE"];
    	else
    		$ref = array();
    
    	if(isset($db_array["reference_id"]) && is_array($db_array["reference_id"]))
    		$ref_id = $db_array["reference_id"];
    	elseif(isset($db_array["REFERENCE_ID"]) && is_array($db_array["REFERENCE_ID"]))
    		$ref_id = $db_array["REFERENCE_ID"];
    	else
    		$ref_id = array();

    bitrix/modules/main/tools.php:182

    maxyc, 25 Августа 2016

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

    +916

    1. 1
    2. 2
    if(!empty($_REQUEST['action_button']))
    			$_REQUEST['action'] = $_REQUEST['action_button'];

    bitrix/modules/main/interface/admin_lib.php:3320

    maxyc, 25 Августа 2016

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