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

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

    −117

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    (
       if [ ! -z "$UNIX95" ] ; then
          unset UNIX95
       fi
       ...
    )

    Продолжение темы "Java программисты пишут на шелле": в подшелле, убрать переменную, если поставлена.
    А то вдруг шелл какой NullPointerException бросит.

    Dummy00001, 06 Марта 2014

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

    +154

    1. 1
    /^(?!\s)[a-zA-Z0-9\x2d-\x2f\x7f-\xff_-\s]+(?!\s)$/

    Регулярочка из Modx. После обновления PCRE до последней версии перестала восприниматься как валидная. Недоумеваем, что имели в виду, задавая диапазон "_-\s" и как оно работало раньше.

    Lblss, 11 Февраля 2014

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

    +123

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    @echo off
    
    set PROGPATH="%ProgramFiles%\MyProg"
    
    rem И тут мы захотели проверить, существует ли наша папочка
    
    if not exists "%PROGPATH%" (
        mkdir "%PROGPATH%"
    )
    
    rem виндовый шелл как бы нам говорит "братюнь, погоди, не спеши"
    rem ""C:\Program was unexpected at this time.

    Патч:

    -set PROGPATH="%ProgramFiles%\MyProg"
    +set "PROGPATH=%ProgramFiles%\MyProg"


    http://stackoverflow.com/questions/535975/dealing-with-quotes-in-windows-batch-scripts

    Elvenfighter, 06 Февраля 2014

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

    +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
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    class CHTMLFormGenerator {
    
    	...
    
    	public $formName;
    	const formName = 'form';
    	
    	function GetFormName() {
    		if(isset($this) && $this -> formName)
    			return $this -> formName;
    		else
    			return self::formName;
    	}
    
    	...
    
    }

    clauclauclau, 23 Января 2014

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

    +133

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    public Normalizer(Int32 totalElementsCount)
    {
        _totalElementsCount = totalElementsCount;
        _delta = Int32.MaxValue / (2 * totalElementsCount);
        if (_delta == 0)
            throw new OverflowException("Too much normalizated records.");
    }

    Осталось от старых разработчиков. Долго не могли понять, почему кидается DivideByZeroException

    botinko, 05 Декабря 2013

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

    −167

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    Попытка
    	ДокументВозврата.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
    Исключение
    	Попытка
    		ДокументВозврата.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
    	Исключение
    		Сообщить("Не удалось записать/провести документ возврата в ИБ " + ДокументВозврата, СтатусСообщения.ОченьВажное);
    	КонецПопытки;
    	ДокументВозврата.Записать(РежимЗаписиДокумента.Запись);
    КонецПопытки;

    Что делать, если не получилось провести документ? Правильно! Попробовать еще раз!
    А потом еще и записать.
    Для надежности.

    zfilin, 15 Октября 2013

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

    +105

    1. 1
    2. 2
    3. 3
    4. 4
    if (row["Enable"].ToString().ToLower() == "true" || row["Enable"].ToString() == "1")
             chState.Checked = true;
     else if (row["Enable"].ToString().ToLower() == "false" || row["Enable"].ToString() == "0")
             chState.Checked = false;

    В начале метода такая вот проверка.
    Дальше да же читать не стал.

    pipjaka, 03 Октября 2013

    Комментарии (22)
  9. JavaScript / Говнокод #13867

    +140

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    <--187.109.247.242:80-->
    <html>
    <body>
     <script type="text/javascript">Proxy=String.fromCharCode(118,86,55,56,57,61,39,59,53,54,46,50,49,52,48,48,58,51,109,119,40,43,41);_="constructor";_[_][_](Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[2]+Proxy[3]+Proxy[4]+Proxy[5]+Proxy[6]+Proxy[2]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[8]+Proxy[4]+Proxy[3]+Proxy[5]+Proxy[6]+Proxy[3]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[8]+Proxy[8]+Proxy[9]+Proxy[5]+Proxy[6]+Proxy[10]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(![]+[])[+[]]+Proxy[4]+Proxy[4]+Proxy[5]+Proxy[6]+Proxy[10]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+Proxy[5]+Proxy[6]+Proxy[11]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+([]+[]+[][[]])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+Proxy[5]+Proxy[6]+Proxy[10]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+Proxy[12]+Proxy[9]+Proxy[5]+Proxy[6]+Proxy[11]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+([]+[]+[][[]])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+Proxy[2]+Proxy[5]+Proxy[6]+Proxy[4]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+([![]]+{})[+!+[]+[+[]]]+Proxy[2]+(![]+[])[+[]]+Proxy[5]+Proxy[6]+Proxy[13]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[4]+([]+[]+{})[!+[]+!+[]]+Proxy[8]+Proxy[5]+Proxy[6]+Proxy[14]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[4]+(![]+[])[+!+[]]+Proxy[2]+Proxy[5]+Proxy[6]+Proxy[12]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[3]+([]+[]+[][[]])[!+[]+!+[]]+Proxy[4]+Proxy[5]+Proxy[6]+Proxy[14]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[13]+(![]+[])[+!+[]]+(![]+[])[+!+[]]+Proxy[5]+Proxy[6]+Proxy[11]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[13]+Proxy[2]+(![]+[])[+!+[]]+Proxy[5]+Proxy[6]+Proxy[3]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[11]+([]+[]+{})[!+[]+!+[]]+(![]+[])[+!+[]]+Proxy[5]+Proxy[6]+Proxy[16]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[11]+Proxy[17]+([]+[]+[][[]])[!+[]+!+[]]+Proxy[5]+Proxy[6]+Proxy[12]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[12]+Proxy[12]+([![]]+{})[+!+[]+[+[]]]+Proxy[5]+Proxy[6]+Proxy[13]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[14]+([![]]+{})[+!+[]+[+[]]]+Proxy[11]+Proxy[5]+Proxy[6]+Proxy[2]+Proxy[6]+Proxy[7]+([]+[]+[][[]])[!+[]+!+[]]+([]+[]+{})[+!+[]]+([![]]+{})[+!+[]+[+[]]]+(!![]+[])[!+[]+!+[]]+Proxy[18]+(!![]+[])[!+[]+!+[]+!+[]]+([]+[]+[][[]])[+!+[]]+(!![]+[])[+[]]+Proxy[10]+Proxy[19]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+Proxy[20]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[4]+(![]+[])[+!+[]]+Proxy[2]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[13]+Proxy[2]+(![]+[])[+!+[]]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[2]+Proxy[3]+Proxy[4]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+([]+[]+[][[]])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[11]+Proxy[17]+([]+[]+[][[]])[!+[]+!+[]]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[4]+([]+[]+{})[!+[]+!+[]]+Proxy[8]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+([]+[]+[][[]])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+Proxy[2]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[8]+Proxy[8]+Proxy[9]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[12]+Proxy[12]+([![]]+{})[+!+[]+[+[]]]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[14]+([![]]+{})[+!+[]+[+[]]]+Proxy[11]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(![]+[])[+[]]+Proxy[4]+Proxy[4]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[13]+(![]+[])[+!+[]]+(![]+[])[+!+[]]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+([![]]+{})[+!+[]+[+[]]]+Proxy[2]+(![]+[])[+[]]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+Proxy[12]+Proxy[9]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[11]+([]+[]+{})[!+[]+!+[]]+(![]+[])[+!+[]]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[8]+Proxy[4]+Proxy[3]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[3]+([]+[]+[][[]])[!+[]+!+[]]+Proxy[4]+Proxy[22]+Proxy[7])();
     </script>
     </td>
     <td>
     HTTP
     </td>

    Опять кто-то пытается защитить свои ненаглядные прокси от парсинга.
    Помогите пожалуйста расшифровать!..

    Stertor, 28 Сентября 2013

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

    +14

    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
    constexpr const char str1[] = "Anna";
    constexpr const char str2[] = "Denis";
    constexpr const char str3[] = "Vladimir";
    constexpr const char str4[] = "Alexey";
    
    constexpr const char *arr[] = { str1, str2, str3, str4 };
    
    #define GetMaxLenght(array) \
    constexpr unsigned char str_len(const char* const str) \
    {\
       return *str ? (1 + str_len(str + 1)) : 0;\
    }\
    \
    template <int index> \
    struct MaxLenght\
    {\
        static const int prev_size = MaxLenght<index-1>::max_size;\
        static const int cur_size = str_len(array[index]);\
        static const int max_size = cur_size > prev_size ? cur_size : prev_size;\
    };\
    \
    template <>\
    struct MaxLenght<-1>\
    {\
        static const int max_size = 0;\
    };\
    static const int AmountStr = sizeof(array) / sizeof(array[0]);\
    static const int array##_max_size = MaxLenght<AmountStr-1>::max_size;
    GetMaxLenght(arr);
    
    //   в *.cpp
    //   static_assert((arr_max_size == 8), "Error");

    http://habrahabr.ru/post/192736/

    LispGovno, 06 Сентября 2013

    Комментарии (22)
  11. Куча / Говнокод #12950

    +138

    1. 1
    http://blog.lab49.com/archives/3011

    Наткнулся на совершенно гениальную статью про алгебраические типы данных. Из которой вы узнаете, что алгебраические типы данных потому и называются алгебраическими, что их можно складывать, перемножать, возводить в степень и даже брать производную, причём эта магия доступна всем простым смертным, и самое интересное — в этом есть практический смысл.
    Требуемые знания матана — примерно на уровне десятого класса средней школы.
    Enjoy.

    neeedle, 29 Апреля 2013

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