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

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

    +33

    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
    template<typename F, typename... Fns>
    struct Overloaded
    {
      std::tuple<F,Fns...> fns;
      
      // эта и следующая за ней функция нужны для рекурсивного
      // накопления кортежа из всех входящих функций
      template<typename First, typename... Others>
      std::tuple<First,Others...> collect(First f, Others... others) {
        auto t = std::make_tuple(f);
        return std::tuple_cat(t, collect(others...));
      }
      template<typename Single>
      std::tuple<Single> collect(Single f) {
        return std::make_tuple(f);
      }
      
      Overloaded(F f, Fns... others) {
        // сохраняем кортеж функций
        fns = collect(f, others...);
      }
    };
    
    template<typename F, typename... Fns>
    Overloaded<F,Fns...> make_overloaded(F f, Fns... fns) {
      return Overloaded<F,Fns...>(f,fns...);
    }
    
    //...
    
    void F1(int) {}
    void F2(int, float) {}
    // ...
    auto f = make_overloaded(F1, F2);

    Не хочется связываться с бустом ввиду его убогости громоздкости. Поэтому пытаюсь сделать сам на чистом C++11 без макросов.
    Не понятно теперь как перегрузить оператор ()?
    Задействовать enable_if? Ни чего в голову не приходит.
    Есть у кого идеи?

    Оттуда

    LispGovno, 03 Февраля 2014

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

    +15

    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
    #include <vector>
    #include <iostream>
    using namespace std;
    
    // -- tools
    
    // макет времени компиляции определяет количество элементов массива указанного в аргументе
    template<class T, size_t N> char (&Size(  T (&arr)[N] ) )[N];
    
    
    // -- internal closed implementation --
    int data1[] = {0, 1, 2};
    char data2[] = {42};
    
    const int (  &GetMechaData1()  ) [ sizeof( Size(data1) )  ] { return data1; }
    const char(  &GetMechaData2()  ) [ sizeof( Size(data2) )  ] { return data2; }
              
    // -- API
    
    //--- функции возвращают ссылки на массивы: например такого: const int[ sizeof( Size(data1) ]
    const int (  &GetMechaData1()  ) [ sizeof( Size(data1) )  ];
    const char(  &GetMechaData2()  ) [ sizeof( Size(data2) )  ];
    
    
    // client code
    template<class T, size_t N> void ViewArray(const T (&arr)[N])
    {
        cout<<"data stored: \n";
        for( auto& item: arr )
            cout<< "item : "<<item<<endl;
    }
    
    int main()
    {
        ViewArray( GetMechaData1() );
        ViewArray( GetMechaData2() );
        
       return 0;
    }

    http://rextester.com/AEINWM88529

    LispGovno, 18 Января 2014

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

    −117

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    //try setting up POST request, if failed settle with GET
            try {
                if (url_variables == null || (params && params.method == URLRequestMethod.GET)) throw new ArgumentError();
                url_request.data = url_variables;
                url_request.method = URLRequestMethod.POST;
            }
            catch(er:Error) {
                url_request.url = url;
                url_request.method = URLRequestMethod.GET;
            }

    Ветвление с помощью try..catch.
    Возьму себе на заметку.

    strax, 13 Января 2014

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

    −90

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    -(BOOL)isGetRest:(CGFloat)page {
        NSString *floatToString = [NSString stringWithFormat:@"%.2f",page];
        NSArray *sepArray = [floatToString componentsSeparatedByString:@"."];
        CGFloat rest = [[sepArray lastObject] floatValue];
        if(rest>0.0){
                 return YES;
        }
        else{
               return NO;
       }
    }

    А вы еще спрашиваете нужно ли программистам знать математику?

    Psionic, 11 Декабря 2013

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

    +154

    1. 1
    2. 2
    $date = date("Y-m-01", strtotime("-1 month"));
    $like = substr($date, 0, 8) . "%";

    а потом $like вставляется в sql-код

    anton0xf, 09 Декабря 2013

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

    +135

    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
    string str = Console.ReadLine();
    int k = str.length; int n = 0;
    
    for (int i = 0; i< k; i=i+1)
    {
    	if (str[i] == ' ')
    		n = n + 1;
    }
    
    string[] arr = new string[n+1]();
    
    for (int i = 0;i<n+1;i=i+1)
    {
    	arr[i]='';
    }
    for (int i = 0;i<n+1;i=i+1)
    {
    	int a = str.IndexOf(' ');
    	string b = str.Substring(0,a);
    	arr[i] = b;
    	if (i != n)
    		str = str.Remove(0,a+1);
    	else
    		str = str.Remove(0,a);
    }
    
    for (int i = 0;i<n+1;i=i+1)
    {
    	str = str + arr[i] + ' ';
    }
    str = str.Remove(k-2,1);

    Православная функция Split() по пробелу:
    1. Объявляем необходимые переменные;
    2. Считаем количество пробелов;
    3. Заполняем массив пустыми строками (ВАЖНО!!!);
    4. Ищем в исходной строке пробелы, записываем в массив подстроку, удалям подстроку с пробелом из исходной строки;
    5. Восстанавливаем исходную строку по эелементам массива (ВАЖНО!!!).

    NitrOxygeN, 05 Декабря 2013

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

    +161

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    $login = $_COOKIE['login'];
      $pass = $_COOKIE['pass'];
      $sec = $_COOKIE['sec'];
    
    
      if ($pass == '')
      {
        header("Location: index.php");
        exit;
      }

    Проверка авторизации в административной части сайта

    santa_microbe, 28 Ноября 2013

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

    +13

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    int offset;
    
    /* где-то ниже */
    
    if (offset <= NULL)
    {
    }

    Антиматерия существует...

    JeremyW, 07 Ноября 2013

    Комментарии (7)
  10. Python / Говнокод #14074

    −98

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    rows = db.query_all("select id, command from всякие-заджойненные-таблички")
    foreach row in rows:
        if row[1] == command:
            return row[0]
    return None

    Высрал сегодня на работе. Пока пых не трогал - такого говна не писал ;)

    bormand, 28 Октября 2013

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

    +137

    1. 1
    2. 2
    КАКАЯ ЛАЛКА СТАВЕТ ДИЗЛОЙСЫ МАИМ ЗАМИЧАТЕЛЬНЫМ ПАСТАМ?? СУК ПА АЙПИЙ ВЫЧЕСЛЮ!!!!
    У МИНЯ ДЕДУШКА КАРАТИСТ ТАК ШТО БОЙТЕСЬ ЛАЛКИ!!!!!воскл

    АВТАРИТЕТ В НЕДАУМЕНИИ АТКУДА СТОЛЬКА ДИЗЛАЙКАВ
    ПАХОЖЫ НА АНАЛЬНЫЙ ЗАГАВАР ЛАЛАК

    PragramistOtBoga, 21 Октября 2013

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