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

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

    +4

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    // File.cpp
    QString File::size() const
    {
        return QString::number(QFileInfo(m_path).size());
    }
    
    // ... somewhere in the code...
    
    File* message = ...
    ...
    if (message->size() == "0")
            return;

    Commit b1aef142 "Refactoring"
    Р - Рефакторинг

    salamon_style, 10 Октября 2019

    Комментарии (43)
  3. Java / Говнокод #25728

    +4

    1. 1
    Java говно

    3_15dar, 22 Июля 2019

    Комментарии (181)
  4. JavaScript / Говнокод #25689

    +4

    1. 1
    this.checkArrayErrors() ? (this.canSend = true) : (this.canSend = false);

    Код разраба, который не прошел испытательный срок и сказал что к нему придираются.

    UnQu1et, 28 Июня 2019

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

    +4

    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
    private async Task CountResultAsync(IProgress<bool> progress)
    {
         object sync = new object();
    
        await Task.Run(() => Parallel.For(0, _dataList.Count, i =>
        {
            lock (sync)
            {
                 var index = _dataList.FindIndex(m => m.FullPath.Equals(_dataList[i].FullPath));
    
                _dataList[index] = new GridModel()
                {
                    FullPath = _dataList[i].FullPath,
                    Name = _dataList[i].Name,
                    Checksum = GetFileChecksum(_dataList[i].FullPath),
                    IsCompleted = true
                };
           }
        }));
    }

    Когда кто-то пытается написать параллельный код, но что-то идет не так.

    ShockWorker, 13 Июня 2019

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

    +4

    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
    &НаКлиенте
    Процедура Расчитать(Команда)
    	ТекДата = ТекущаяДата();
    	ТекМесяц = Месяц(ТекДата);
    	МесяцРождения = Месяц(ДатаРождения);
    
    	
    	Если ТекМесяц=МесяцРождения Тогда       //День рождения сегодня или в этом месяце,
    	    Если День(ТекДата)=День(ДатаРождения) Тогда
    		
    			КоличествоДнейДоДР = 0;
    		ИначеЕсли День(ТекДата)<День(ДатаРождения)  Тогда 
    			КоличествоДнейДоДР = День(ДатаРождения)-День(ТекДата);
    		Иначе
    			
    			
    		  КоличествоДнейДоДР = День(КонецМесяца(ТекДата))-День(ТекДата);
    		 Дата = ДобавитьМесяц(ТекДата,1);
    		 Ограничитель = (12-ТекМесяц)+МесяцРождения;
    		 Для сч=1 По Ограничитель Цикл
    			Если сч=Ограничитель Тогда			
    			    КоличествоДнейДоДР = КоличествоДнейДоДР+День(ДатаРождения);
    			    продолжить;			
    			КонецЕсли; 
    
    			КоличествоДнейДоДР = КоличествоДнейДоДР+День(КонецМесяца(Дата)) ;
    			 Дата = ДобавитьМесяц(Дата,1);
    		 	
    		 
    		 КонецЦикла; 
    		
    		КонецЕсли; 
    		
    	
    	ИначеЕсли ТекМесяц<МесяцРождения Тогда   //День рождения еще не наступил,
    		 КоличествоДнейДоДР = День(КонецМесяца(ТекДата))-День(ТекДата);
    		 Дата = ДобавитьМесяц(ТекДата,1);
    		 Для сч= ТекМесяц+1 По МесяцРождения Цикл
    			
                            Если сч=МесяцРождения Тогда
    			   КоличествоДнейДоДР = КоличествоДнейДоДР+День(ДатаРождения);
    			   продолжить;
    			КонецЕсли; 
    
    			КоличествоДнейДоДР = КоличествоДнейДоДР+День(КонецМесяца(Дата)) ;
    			 Дата = ДобавитьМесяц(Дата,1);
    		 	
    		 
    		 КонецЦикла; 
    		
    		
    	ИначеЕсли ТекМесяц>МесяцРождения Тогда     //День рождения уже прошел.	
    		     КоличествоДнейДоДР = День(КонецМесяца(ТекДата))-День(ТекДата);
    		 Дата = ДобавитьМесяц(ТекДата,1);
    		 Ограничитель = (12-ТекМесяц)+МесяцРождения;
    		 Для сч= 1 По Ограничитель Цикл
    
    			Если сч=Ограничитель Тогда
    			  КоличествоДнейДоДР = КоличествоДнейДоДР+День(ДатаРождения);
    			  продолжить;
    			КонецЕсли;
     
    			КоличествоДнейДоДР = КоличествоДнейДоДР+День(КонецМесяца(Дата)) ;
    			 Дата = ДобавитьМесяц(Дата,1);
    		 	
    		 
    		 КонецЦикла; 
    	
    	 КонецЕсли; 
    	 
    	 Сообщение = Новый СообщениеПользователю;
    	 Сообщение.Текст = КоличествоДнейДоДР;
    	 Сообщение.Сообщить(); 
    		
    	// Вставить содержимое обработчика.
    КонецПроцедуры

    Задача рассчитать количество дней до дня рождения, вопрос в том что не много ли я использовал условий Если?

    rusin_av, 16 Мая 2019

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

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    #include <iostream>
    #include <string>
    #include <string_view>
    
    int main() {
      std::string s = "Hellooooooooooooooo ";
      std::string_view sv = s + "World\n";
      std::cout << sv;
    }

    https://alexgaynor.net/2019/apr/21/modern-c++-wont-save-us/
    What's happening here is that s + "World\n" allocates a new std::string, and then is converted to a std::string_view. At this point the temporary std::string is freed, but sv still points at the memory that used to be owned by it. Any future use of sv is a use-after-free vulnerability. Oops! C++ lacks the facilities for the compiler to be aware that sv captures a reference to something where the reference lives longer than the referent. The same issue impacts std::span, also an extremely modern C++ type.

    j123123, 24 Апреля 2019

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

    +4

    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
    #include <inttypes.h>
    
    auto a(auto b) __attribute__ ((noinline));
    
    auto a(auto b)
    {
        return b*1.5;
    }
    
    double test1(double in)
    {
      return a(in);
    }
    
    uint64_t test2(uint64_t in)
    {
      return a(in);
    }
    
    
    /*
    https://godbolt.org/z/6ZQAnv
    
    auto a<double>(double):
            mulsd   xmm0, QWORD PTR .LC0[rip]
            ret
    test1(double):
            jmp     auto a<double>(double)
    auto a<unsigned long>(unsigned long):
            test    rdi, rdi
            js      .L5
            pxor    xmm0, xmm0
            cvtsi2sd        xmm0, rdi
            mulsd   xmm0, QWORD PTR .LC0[rip] # хули ты мне плавучего питуха в xmm0 возвращаешь?
            ret
    .L5:
            mov     rax, rdi
            and     edi, 1
            pxor    xmm0, xmm0
            shr     rax
            or      rax, rdi
            cvtsi2sd        xmm0, rax
            addsd   xmm0, xmm0
            mulsd   xmm0, QWORD PTR .LC0[rip]
            ret
    test2(unsigned long):
            sub     rsp, 8
            call    auto a<unsigned long>(unsigned long)
            movsd   xmm1, QWORD PTR .LC1[rip]
            comisd  xmm0, xmm1
            jnb     .L8
            cvttsd2si       rax, xmm0 # ну нахуй тут надо double в uint64_t конвертить
            add     rsp, 8 # почему это не делается в auto a<unsigned long>(unsigned long)
            ret
    .L8:
            subsd   xmm0, xmm1
            add     rsp, 8
            cvttsd2si       rax, xmm0
            btc     rax, 63
            ret
    .LC0:
            .long   0
            .long   1073217536
    .LC1:
            .long   0
            .long   1138753536
    
    */

    концепты-хуепты

    j123123, 23 Марта 2019

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

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    struct Data { /* ... */ };
    
    class Items {
      void insert(Data&& data) {
        _storage.emplace_back(std::forward<Data>(data));
      }
    private:
      std::vector<Data> _storage;
    };

    Dumb luck. Nuff said.

    Elvenfighter, 08 Февраля 2019

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

    +4

    1. 1
    2. 2
    Yandere Simulator
    https://f0ck.me/b/09d3f680.mp4

    j123123, 22 Января 2019

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

    +4

    1. 1
    2. 2
    3. 3
    Если ЭтаФорма.ВладелецФормы.ВладелецФормы.Объект.Заголовок = "Согласование контрагента " Или ЭтаФорма.ВладелецФормы.ВладелецФормы.Объект.Заголовок = "" Тогда
                 ЭтаФорма.ВладелецФормы.ВладелецФормы.Объект.Заголовок = "Согласование контрагента " + КонтрагентДО;
    КонецЕсли;

    Просто оставлю это здесь.
    Когда ж вы все передохните любители ВладельцевФормы через ВладельцаФормы.

    MaxBS, 11 Января 2019

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