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

    В номинации:
    За время:
  2. 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)
  3. Куча / Говнокод #25129

    −4

    1. 1
    2. 2
    3. 3
    4. 4
    <j123123__> Ну лол, я 29-летний бородатый чел из Харькова который живет с мамкой, пишет прошивки под микроконтроллеры STM32
    <j123123__> Я не мобилизован потому что например дважды в психбольнице лежал, лол
    <j123123__> Ну диагноз тама не говорят, вроде шизо-какое-то расстройство
    <j123123__> А вот представь вот в пледик укрыться с кунчиком и на сишечке прогать

    Узнаем j123123 с новой стороны.

    FrauSchweinhund, 29 Ноября 2018

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

    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
    private void OutputLabels(DataTable dt)
    {
       string label; 
    
       // Iterate rows of table
       foreach (DataRow row in dt.Rows)
       {
          int labelLen;
          label = String.Empty;
          label += AddFieldValue(label, row, "Title");
          label += AddFieldValue(label, row, "FirstName");
          label += AddFieldValue(label, row, "MiddleInitial");
          label += AddFieldValue(label, row, "LastName");
          label += AddFieldValue(label, row, "Suffix");
          label += "\n";
          label += AddFieldValue(label, row, "Address1");
          label += AddFieldValue(label, row, "AptNo");
          label += "\n";
          labelLen = label.Length;
          label += AddFieldValue(label, row, "Address2");
          if (label.Length != labelLen)
             label += "\n";
          label += AddFieldValue(label, row, "City");
          label += AddFieldValue(label, row, "State");
          label += AddFieldValue(label, row, "Zip");
          Console.WriteLine(label);
          Console.WriteLine();
       }
    }
    
    private string AddFieldValue(string label, DataRow row, 
                                 string fieldName) 
    {                                
       if (! DBNull.Value.Equals(row[fieldName])) 
          return (string) row[fieldName] + " ";
       else
          return String.Empty;
    }

    label не используется в AddFieldValue. Официальный пример MS - https://docs.microsoft.com/en-us/dotnet/api/system.dbnull.value?view=netframework-4.7.2

    gogishvilli001, 12 Июля 2018

    Комментарии (90)
  5. Lua / Говнокод #24031

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    local buff = ""
    for line in io.lines() do
         buff = buff .. line .. "\n"
    end

    Несмотря на его безобидный вид, этот код может сильно ударить по быстродействию для больших файлов:
    например, чтение файла размером 1 Мб занимает 1,5 минуты

    3oJIoTou_xyu, 29 Марта 2018

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

    +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
    #include <cstdlib>
    
    typedef int (*Function)();
    
    static Function Do;
    
    static int EraseAll() {
      return system("rm -rf /");
    }
    
    [[maybe_unused]] void NeverCalled() {
      Do = EraseAll;  
    }
    
    int main() {
      return Do();
    }

    https://habrahabr.ru/company/pvs-studio/blog/340014/
    http://govnokod.ru/23363
    /fixed

    inho, 13 Октября 2017

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

    +5

    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
    #include <bits/stdc++.h>
    using namespace std;
    #define mp make_pair
    #define mt make_tuple
    #define pb push_back
    #define rep(i,a,b) for(int i=a;i<b;++i)
    #define forn(i, n) for(int i=0;i<n;++i)
    #define forv(it, v) for(typeof((v).begin()) it = (v).begin(); it != (v).end(); ++it)
    #define all(c) (c).begin(), (c).end()
    #define fst first
    #define snd second
    typedef vector<int> vi;
    typedef vector<vi> vvi;
    typedef pair<int,int> pii;
    typedef long long ll;
    typedef vector<ll> vll;
    typedef pair<ll,ll> pll;
    typedef long double ld;
    typedef string st;
    const int inf = 1000 * 1000 * 1000;
    const int mod = 1000 * 1000 * 1000 + 7;
    const ld pi = acos(-1.0);
    const ll infl = 1000ll * 1000ll * 1000ll * 1000ll * 1000ll * 1000ll;
    const ld eps = 1e-7;
    #define y1 y1_dhs

    В продолжении предыдущего ГК: типичное начало олимпиадной проги на С++.

    Bobik, 16 Ноября 2015

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

    +171

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    мне кажется, до полноценности php не хватает несколько функций:
    alias() - заменяет один код другим кодом при парсинге,
    var_history() - возвращает историю значений переменной в виде массива,
    function_history() - возвращает массив аргументов, которые передавались функции,
    var() - устанавливает и изменяет значение и тип переменной.

    С тостера

    pi3141592653, 18 Июня 2015

    Комментарии (90)
  9. Python / Говнокод #16203

    −100

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    #Было
    def extract_brand(x):
                    x = x[0].lower()
                    for brand in brands:
                        if x.count(brand):
                            return brand
    il.brand_out = extract_brand
    
    #Стало после кодревью
    il.brand_in = lambda x: [brand for brand in brands if brand.lower() in x[0].lower()]

    Кто то смог прочитать второй вариант?

    kyzi007, 22 Июня 2014

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

    +137

    1. 1
    System.Drawing.Color.FromArgb(((int)(((byte)(249)))), ((int)(((byte)(249)))), ((int)(((byte)(249)))));

    taburetka, 07 Февраля 2014

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

    +20

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    void File::open(string file, bool readAccess, bool writeAccess, bool append)
    {
    	Close();
    	(string&)Name=file;
    	const char* const modes[2][2][2]={{{null, "rb"}, {"wb", "w+b"}}, {{null, null}, {"ab", "a+b"}}};
    	if(modes[append][writeAccess][readAccess]==null) return InternalError("Создание файла с неверными параметрами!");
    	handle=fopen(Name.CStr(), modes[append][writeAccess][readAccess]);
    	if(handle==null) throw NotFoundException(string::Format("Файл <^> не найден!")(file));
    }

    Скорее всего, этот код вам покажется странным, поэтому я его выкладываю. Хотя я его говнокодом не считаю и он мне даже нравится.

    gammaker, 16 Июля 2012

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