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

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

    +545

    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
    <?php
    /**
     * Объединяет массивы, сохраняя элементы присутствующие лишь в одном из массивов
     * + сортирует без сохранения ключей
     * @param array $a1
     * @param array $a2
     * @return array
     */
    function array_xor_merge($a1, $a2) {
    	$allr	 = array_merge($a1, $a2);
    	$allp	 = array_flip($allr);
    	foreach (array_count_values($allr) as $key => $cnt) {
    		if ($cnt > 1) {
    			unset($allp[$key]);
    		}
    	}
    	$res = array_flip($allp);
    	sort($res);
    	return $res;
    }

    Rijen, 22 Августа 2016

    Комментарии (5)
  3. Python / Говнокод #20869

    +1345

    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
    # Далее перечислены все флаги, с помощью которых выбирается то или иное поведение различных копий сайтов.
    #
    # INSTANCE_SPECIFIC_DJANGO_DEBUG
    #     В какое значение установить DEBUG переменную Джанго (желтые страницы с ошибками 500).
    #     True - показывать желтые страницы (для копий программистов)
    #     False - не показывать (вместо этого показаь 500.html шаблон) - для боевой копии
    #
    # INSTANCE_SPECIFIC_DJANGO_DEBUG_STATIC
    #     Надо ли в Урл Паттернс Джанги добавить media и static и обслуживать их Джангой
    #     True - да, используется для копии сайта программистов
    #     False - нет, используется для демонстрационной и боевой копии
    #     (там nginx обрабатывает статику и STATIC_URL в этом случае будет такой чтобы указывать на nginx)
    
    # Все копии программистов. Что значает эта секция см. комменты чуть выше.
    if INSTANCE_ROOT.startswith('/var/www/elin_800'):
        INSTANCE_SPECIFIC_DJANGO_DEBUG = True
        INSTANCE_SPECIFIC_DJANGO_DEBUG_STATIC = True
    
    # Демонстрационная копия. Что значает эта секция см. комменты чуть выше.
    elif INSTANCE_ROOT == '/var/www/dev.example.ru':
        INSTANCE_SPECIFIC_DJANGO_DEBUG = False
        INSTANCE_SPECIFIC_DJANGO_DEBUG_STATIC = False

    Файл настроек джанги, доставшийся мне от аутсорсера

    defaultvoice, 19 Августа 2016

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

    +2591

    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
    KeyFactory keyFactory = new KeyFactory();
    KeyObj keyObj = keyFactory.getKeyObj(wParam);
    keyObj.doStuff();
    
    
    class VK_F11 extends KeyObj {
       boolean val;
       public void doStuff() {
          val = !val;
       }
    }
    
    class VK_F12 extends KeyObj {
       boolean val;
       public void doStuff() {
          val = !val;
       }
    }
    
    class KeyFactory {
       public KeyObj getKeyObj(int param) {
          switch(param) {
             case VK_F11:
                return new VK_F11();
             case VK_F12:
                return new VK_F12();
          }
          throw new KeyNotFoundException("Key " + param + " was not found!");
       }
    }

    Казалось бы, что может быть проще работы с GPIO?

    CYB3R, 19 Августа 2016

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

    +3

    1. 1
    2. 2
    $arParams["SET_TITLE"] = $arParams["SET_TITLE"]!="N";
    $arParams["SET_LAST_MODIFIED"] = $arParams["SET_LAST_MODIFIED"]==="Y";

    news.detail - cтандартный компонент Битрикса

    pgood, 27 Июля 2016

    Комментарии (5)
  6. 1C / Говнокод #20379

    −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
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    Область.Параметры.месяц 	= МесяцДляГрафика;
    Область.Параметры.первое 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("01", ДатаДляПечатиКалендаря));
    Область.Параметры.второе 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("02", ДатаДляПечатиКалендаря));
    Область.Параметры.третье 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("03", ДатаДляПечатиКалендаря));
    Область.Параметры.четвертое = ПеревестиВКалендарПредставл(ОпрДеньНедели("04", ДатаДляПечатиКалендаря));
    Область.Параметры.пятое 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("05", ДатаДляПечатиКалендаря));
    Область.Параметры.шестое 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("06", ДатаДляПечатиКалендаря));
    Область.Параметры.седьмое 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("07", ДатаДляПечатиКалендаря));
    Область.Параметры.восьмое 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("08", ДатаДляПечатиКалендаря));
    Область.Параметры.девятое 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("09", ДатаДляПечатиКалендаря));
    Область.Параметры.десятое 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("10", ДатаДляПечатиКалендаря));
    Область.Параметры.одиннадцатое 		= ПеревестиВКалендарПредставл(ОпрДеньНедели("11", ДатаДляПечатиКалендаря));
    Область.Параметры.двенадцатое 		= ПеревестиВКалендарПредставл(ОпрДеньНедели("12", ДатаДляПечатиКалендаря));
    Область.Параметры.тринадцатое 		= ПеревестиВКалендарПредставл(ОпрДеньНедели("13", ДатаДляПечатиКалендаря));
    Область.Параметры.четырнадцатое 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("14", ДатаДляПечатиКалендаря));
    Область.Параметры.пятнадцатое 		= ПеревестиВКалендарПредставл(ОпрДеньНедели("15", ДатаДляПечатиКалендаря));
    Область.Параметры.шестнадцатое 		= ПеревестиВКалендарПредставл(ОпрДеньНедели("16", ДатаДляПечатиКалендаря));
    Область.Параметры.семнадцатое  		= ПеревестиВКалендарПредставл(ОпрДеньНедели("17", ДатаДляПечатиКалендаря));
    Область.Параметры.восемнадцатое 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("18", ДатаДляПечатиКалендаря));
    Область.Параметры.девятнадцатое 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("19", ДатаДляПечатиКалендаря));
    Область.Параметры.двадцатое		 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("20", ДатаДляПечатиКалендаря));
    Область.Параметры.двадцатьпервое 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("21", ДатаДляПечатиКалендаря));
    Область.Параметры.двадцатьвторое 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("22", ДатаДляПечатиКалендаря));
    Область.Параметры.двадцатьтретье	= ПеревестиВКалендарПредставл(ОпрДеньНедели("23", ДатаДляПечатиКалендаря));
    Область.Параметры.двадцатьчетвертое = ПеревестиВКалендарПредставл(ОпрДеньНедели("24", ДатаДляПечатиКалендаря));
    Область.Параметры.двадцатьпятое 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("25", ДатаДляПечатиКалендаря));
    Область.Параметры.двадцатьшестое 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("26", ДатаДляПечатиКалендаря));
    Область.Параметры.двадцатьседьмое 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("27", ДатаДляПечатиКалендаря));
    Область.Параметры.двадцатьвосьмое 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("28", ДатаДляПечатиКалендаря));
    Попытка
    	Область.Параметры.двадцатьдевятое 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("29", ДатаДляПечатиКалендаря));
    	Область.Параметры.тридцатое			= ПеревестиВКалендарПредставл(ОпрДеньНедели("30", ДатаДляПечатиКалендаря));
    	Область.Параметры.тридцатьпервое 	= ПеревестиВКалендарПредставл(ОпрДеньНедели("31", ДатаДляПечатиКалендаря));
    Исключение
    КонецПопытки;

    Выводим на печать дни недели для каждого дня месяца

    CMblCL, 14 Июля 2016

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

    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
    SoftwareCommon::params::IParamLoader::TypeDb SettingsProxy::getTypeDb() const
    	{
    		try
    		{
    			auto type = Locator::Services::Locator->Resolve<ISettings^>()->Type;
    			switch (type)
    			{
    			case decltype(type)::Firebird: return IParamLoader::Firebird;
    			case decltype(type)::MSSQL: return IParamLoader::MSSQL;
    			default:
    				throw std::runtime_error("Unsupported db type");
    			}
    		}
    		catch (Exception ^ex)
    		{
    			throw std::runtime_error(marshal_1251(ex->ToString()));
    		}
    	}

    laMer007, 13 Июля 2016

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

    +2

    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
    <table>       
            <?php 
            $showShowroomsIds =  array();
            foreach($available_sizes as $sizeName):
            $available  =  false;
            foreach($warehouses as $warehouse) :
                $uuid = $warehouse['uuid'];
                $name = $warehouse['name'];
                $quantity = $size_quantity[$uuid][trim($sizeName)];
                if($quantity >0) {
                    $available  =  true;
                }
            endforeach;
            if(!$available) continue;
            ?>
            <?php
            foreach($warehouses as $warehouse) :
            $uuid = $warehouse['uuid'];
            //echo $uuid."<br>";
            
            if(isset($showrooms[$uuid])) {
                $showShowroomsIds[$uuid] = $uuid;
            }
            
            $name = $warehouse['name'];
            $quantity = $size_quantity[$uuid][trim($sizeName)];
            if($quantity) {
                $eshopAvailable = '';
                if($uuid == $eshopUuid && $quantity > 0) $eshopAvailable = 'eshop_available=\'y\'';
                $quantity  = ModelCommonWarehouse::getFormattedQuantity($quantity,$uuid);
                $qtA  =  "";
            } else {
                continue;
                $qtA  =  "not-available";
                $quantity  =  "нет в наличии";
            }
            ?>
            <tr <?php echo $eshopAvailable?> available='y'>
                <td class="td">
                    <?php if(isset($showrooms[$uuid])):?><a href="#" class="showroom-info"  uuid="<?php echo $uuid;?>" icId="uuid" rel="nofollow"><?php endif;?>
                    <?php echo $name?>
                    <!--<?php echo $uuid;?>-->
                    <?php if(isset($showrooms[$uuid])):?></a><?php endif;?>
                </td>
                <td class="qt <?php echo $qtA;?>"   ><?php echo $quantity;?></td>
            </tr>
            <?php endforeach;?>
            <tr>
                <td style="height: 10px;"></td>
            </tr>
            <?php endforeach;?>
        </table>

    Opencart. Прямо во вьюхе ровным слоем размазаны бизнес-логика и js.
    Что самое интересное, оборот магазина составляет 7 млн. руб (о__О)

    Panda, 13 Июля 2016

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

    +3

    1. 1
    session_decode(session_encode());

    что это вообще такое и зачем оно?

    kropotor, 27 Июня 2016

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

    +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
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    // can only do five hundred at a time. can't find documentation
        // for this number, but if I do more than that I get an error
        // message
    	for (five_hundred <- pageranks.grouped(500))
    	{
    	  try
    	  {
    	    upload(five_hundred)
    	  }
    	  catch
    	  {
    	    // the datastore is not entirely reliable. for less than 1% of the
    	    // calls it seems to fail randomly. which is a bit annoying if
    	    // you're uploading a lot of data and don't want to stop when half of
    	    // it is already stored
    	    case ex : Throwable =>
    	    {
    	      try
    	      {
    	        ex.printStackTrace()
    	        // try a second time
    	        upload(five_hundred)
    	      }
    	      catch
    	      {
    	        // don't try a third time. just continue
    	        case ex : Throwable => ex.printStackTrace()
    	      }
    	    }
    	  }
    	}

    Наткнулся на пост, в котором некий Ph. D рекламировал scala в качестве замены питону

    Fike, 09 Июня 2016

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

    −4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    Maven
    
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.0.0.GA</version>
        <classifier>sources</classifier>
        <scope>provided</scope>
    </dependency>

    Кто-то изобретательный прицепил исходники библиотеки к проекту таким способом, чтобы переходить к ним при разработке.

    morph, 02 Июня 2016

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