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

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

    −1

    1. 1
    2. 2
    3. 3
    Давайте хвалить "C++"
    
    https://m.vk.com/video-72495085_456239260?list=e8cb53a2003660e817&from=wall-72495085_852669

    minusinho, 31 Июля 2018

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

    +3

    1. 1
    2. 2
    3. 3
    class ... {
        void enable(bool enabled = false);
    }

    tar_gz, 30 Июня 2018

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

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Если (Строка(Объект.ДатаНач) = "01.01.0001 0:00:00") или (Строка(Объект.ДатаКон) = "01.01.0001 0:00:00") Тогда
      ТекстСообщения = НСтр("ru = 'Задайте период формирования отчета!
      |Должны быть заполнены дата начала и дата окончания периода.'");
      Предупреждение(ТекстСообщения);
      Возврат;
     КонецЕсли;

    Проверка даты от лучшего программиста организации с ЗП 100k р

    AlexZ1978, 15 Июня 2018

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

    −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
    static func == (lhs: Card, rhs: Card) -> Bool {
           return (lhs.color == rhs.color &&
            lhs.number == rhs.number &&
            lhs.shading == rhs.shading &&
            lhs.symbol == rhs.symbol) ||
            (lhs.color == rhs.color &&
            lhs.number != rhs.number &&
            lhs.shading != rhs.shading &&
            lhs.symbol != rhs.symbol) ||
            (lhs.color != rhs.color &&
            lhs.number == rhs.number &&
            lhs.shading != rhs.shading &&
            lhs.symbol != rhs.symbol) ||
            (lhs.color != rhs.color &&
            lhs.number != rhs.number &&
            lhs.shading == rhs.shading &&
            lhs.symbol != rhs.symbol) ||
            (lhs.color != rhs.color &&
            lhs.number != rhs.number &&
            lhs.shading != rhs.shading &&
            lhs.symbol == rhs.symbol) ||
            (lhs.color != rhs.color &&
            lhs.number != rhs.number &&
            lhs.shading != rhs.shading &&
            lhs.symbol != rhs.symbol)
        }

    Пытаюсь реализовать правила игры в Set протоколом Equatable. Говнокод?

    govnokoder3948, 25 Мая 2018

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

    +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
    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
    // https://github.com/Navadvipa-Chandra-das/prabhupada_calendar/blob/master/source/Prabhupada_convert.d
    
        bool день_ли_это;
        Тип_строки вид_строки;
        
        Класс_Хитрый_накопитель Хитрый_накопитель = new Класс_Хитрый_накопитель( !Нужно_ли_удалять_пустые_дни, !Нужно_ли_удалять_пустые_дни_окончания_поста, Выходной_файл );
        // цикл не простой, а с меткой "цикл"
        цикл: while ( ( строка = Входной_файл.readln() ) !is null ) {
    
          if ( Нужно_ли_удалять_служебные_строки ) {
            if ( строка.length < 3 )
              // чудо, а не возможность! Можно делать любые переходы и вылеты из множества вложенных циклов!
              continue цикл;
            служебная_строка = matchFirst( строка, выражение_служебная_строка );
            if ( служебная_строка.captures.length > 0 )
              continue цикл;
          }
        
          день_месяца = matchFirst( строка, выражение_день );
          день_ли_это = день_месяца.captures.length > 0;
          
          if ( день_ли_это ) {
            вид_строки = Тип_строки.День;
            if ( Нужна_ли_табуляция ) {
              строка = "\t"c ~ день_месяца.captures[ 1 ] ~ "\t"c ~ день_месяца.captures[ 2 ]              ~ "\t"c ~ день_месяца.captures[ 3 ] ~
                       "\t"c ~ день_месяца.captures[ 4 ] ~ "\t"c ~ день_месяца.captures[ 6 ].stripRight() ~ "\t"c ~ день_месяца.captures[ 7 ] ~
                       "\t"c ~ день_месяца.captures[ 8 ] ~ "\t"c ~ день_месяца.captures[ 10 ];
              // обрабатываем "звездочку" поста
              if ( день_месяца.captures[ 11 ].indexOf( '*' ) != -1 )
                строка ~= "\t*"c;
              строка ~= "\n";
            }
            // Удаляем, при желании комментрий к Экадаши - подходит для поста и не додходит для поста. Все равно есть еще символ звездочка и
            // строка с именем Экадаши и явным упоминанием о посте!
            if ( Нужно_ли_удалять_комментарий_Экадаши ) {
              строка = replaceFirst( строка, выражение_для_чистки_комментария_Экадаши, ""c );
            }
          } else {
            проверка_месяца = matchFirst( строка, выражение_месяц_ли_это );
            if ( проверка_месяца.captures.length > 0 ) {
              вид_строки = Тип_строки.Месяц;
              // Просто удаляем цепочку начальных пробелов в строках месяца, если готовим табуляцию
              if ( Нужна_ли_табуляция )
                строка = replaceFirst( строка, выражение_цепочка_пробелов_в_начале_строки, ""c );
            } else {
              // Заменяем цепочку пробелов вначале строки на один единственный символ табуляции для праздников, но только если нужна табуляция
              пробелы_в_начале_строки = matchFirst( строка, выражение_цепочка_пробелов_в_начале_строки );
              if ( пробелы_в_начале_строки.captures.length > 0 ) {
                окончание_поста = matchFirst( строка, выражение_окончание_поста );
                if ( окончание_поста.captures.length > 0 )
                  вид_строки = Тип_строки.Окончание_поста;
                else
                  вид_строки = Тип_строки.Праздник;
                if ( Нужна_ли_табуляция )
                  строка = replaceFirst( строка, выражение_цепочка_пробелов_в_начале_строки, "\t"c );
              } else
                вид_строки = Тип_строки.Солнце;
            }
          }
    
          // Удаляем строки из тире и GCal, но только если нужна табуляци. В книге они не нужны.
          // Можно указать номер версии программы GCal в колонтитулах книги при желании
          if ( Нужна_ли_табуляция ) {
            if ( вид_строки == Тип_строки.Месяц )
              строка = replaceAll( строка, выражение_для_чистки_Месяца, ""c );
            if ( вид_строки == Тип_строки.Солнце )
              строка = replaceAll( строка, выражение_для_чистки_Солнца, ""c );
          }
          
          // Переводим сначала фразы. Длительная операция, так как переводятся все имеющиеся фразы, не зависимо от того, встречаются ли они в строке или нет
          foreach ( ref фраза; фразы )
            строка = replaceAll( строка, regex( фраза ), _Словарь_фраз[ фраза ] );
    
          // Переводим слова. Быстрее, так как переводятся только те слова, которые встречаются в данной конкретной строке
          слова = std.regex.split( строка, выражение_разделитель );
          // сортируем, чтобы короткие слова не позаменялись в более длинных словах внутри
          // Вдохнули поглубже! Такого чуда я еще не видел! Не иначе как mixin в действии!
          слова.sort!( "a.length > b.length" );
          foreach ( ref слово; слова )
            if ( слово.length > 0 )
              строка = replaceAll!( Чудо_слов )( строка, regex( слово ) );
          
          Хитрый_накопитель.В_копилку( строка, вид_строки );
        }
        // Пропихнем в файл последнюю строку
        Хитрый_накопитель.В_копилку( ""c, Тип_строки.День );
    
        window.showMessageBox( UIString.fromId( "ЧЕСТЬ_ИМЕЮ_ДОЛОЖИТЬ"c ),
                               UIString.fromId( "ЗАДАНИЕ_ВЫПОЛНЕНО!"c ) );
    }

    Кришнаит, пишущий на языке D в стиле 1С

    j123123, 12 Мая 2018

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

    +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
    select
      x1.airport, x1.amount, x1.exempt
    from
      Taxes x1
    where
      x1.code = 'departure'
      and x1.airport in (
        select
          xx1.airport
        from
          (select
            yx1.airport
          from
            Taxes yx1
          where
            yx1.airport = x1.airport
            and yx1.code = x1.code
          group by
            yx1.airport, yx1.amount, yx1.exempt
          ) xx1
        group by xx1.airport
        having count(xx1.airport) > 1
      )
    ;

    Давно я не копался в SQL. Вот что нагородил :(

    Суть такова: у аэропортов есть departure tax, который может быть разный в зависимости от некоторых критериев (нерелевантно каких).
    А может быть и одинаковый. Но все равно аэропорт может иметь несколько рядков в БД (с одинаковым amount). А еще может быть exempt = 'X',
    что тождественно amount = 0.

    Задача: выбрать все рядки с departure tax для аэропортов у которых taxamt/exempt разный в зависимости от некоторых других критериев.

    Elvenfighter, 10 Мая 2018

    Комментарии (11)
  8. JavaScript / Говнокод #24202

    +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
    /**
    * Вхождения слова "питушня" в говнокодах по языкам
    */
    
    {
         "C++": 124,
         "PHP": 56,
         "Куча": 54,
         "C": 41,
         "JavaScript": 39,
         "C#": 25,
         "Python": 11,
         "Java": 10,
         "Pascal": 8,
         "SQL": 7,
         "VisualBasic": 2,
         "Swift": 2,
         "ActionScript": 1,
         "Assembler": 1,
         "Perl": 1,
         "Haskell": 1,
         "Ruby": 1,
         "1C": 0,
         "Lua": 0,
         "Objective C": 0,
         "bash": 0
    }

    mazhuravlev, 28 Апреля 2018

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

    0

    1. 1
    2. 2
    3. 3
    https://twitter.com/i_am_romochka/status/986936174538383365
    UDP: кинул тебе за щеку
    TCP: кинул тебе за щеку, ПРОВЕРЯЙ

    А откуда эта хуита с "защекой" пошла? Не с говнокода ли?

    j123123, 20 Апреля 2018

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

    −4

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    List<Validatable> list = getValues();
    
    ...
    return list == null || list.stream().reduce(Boolean.TRUE,
                        (identity, cf) -> identity
                                && cf.validate().stream()
                                .map(ValidationError::getError)
                                .peek(feedbackPanel::error)
                                .count() == 0,
                        (result1, result2) -> result1 && result2);

    Покритикуйте ошибки использования stream и lambda

    owner, 16 Апреля 2018

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

    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
    #include "stdafx.h"
    #include<iostream>
    #include<vector>
    
    using namespace std;
    /*
    Задание: перемножить две матрицы и вывести результат на экран
    */
    
    vector<vector<int>> inputToVector(int n,int m) {
    	vector<vector<int>>vec(n, vector<int>(m));
    	for (int i = 0; i < n; i++) {
    		for (int j = 0; j < m; j++) {
    			cin >> vec[i][j];
    
    		}
    	}
    	return vec;
    }
    template<class T>
    void multiple(vector<T>a,vector<T>b,int x1,int y1,int y2) {
    	int ans = 0;
    	for (int i = 0; i < x1; i++) {
    		for (int j = 0; j < y2; j++) {
    			for (int k = 0; k < y1; k++) {
    				ans += a[i][k] * b[k][j];
    			}
    			cout << ans << '\t';
    			ans = 0;
    		}
    		
    		cout << endl;
    	}
    }
    int main()
    {
    	setlocale(LC_ALL, "Russian");
    	int x1, y1, x2, y2,temp;
    	cout << "Требуется вычислить произведение двух матриц А и В" << endl;
    	cout << "Введите размерность матрицы А" << endl;
    	cin >> x1 >> y1;
    	cout << "Введите элементы матрицы А" << endl;
    	vector<vector<int>>one = inputToVector(x1, y1);
    	cout << "Введите размерность матрицы B" << endl;
    	cin >> x2 >> y2;
    	cout << "Введите элементы матрицы B" << endl;
    	vector<vector<int>>two = inputToVector(x2, y2);
    	cout << "Результирующая матрица, полученная перемножением матрицы А на матрицу В" << endl;
    	multiple(one, two,  x1,  y1, y2);
    	system("pause");
    	return 0;
    }

    ArthurMakaev, 13 Апреля 2018

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