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

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

    +113

    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
    let rnd = System.Random()
     
    // список из 10-ти случайных элементов
    let myList = [1..10] |> List.map (fun x -> rnd.Next(1, 100))
     
    // функция, исключающая элементы с нечётными номерами
    let removeEven lst = [
        let i = ref 0
        for n in lst do
            if (!i % 2 <> 0) then yield n
            i := !i + 1]
     
    // выводим список
    printfn "%A" myList
     
    // исключаем нечётные и выводим
    printfn "%A" (removeEven myList)

    qbasic, 01 Января 2011

    Комментарии (46)
  3. Pascal / Говнокод #4965

    +113

    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
    function FUNC(XD: TXMLDocument; L: ShortString): IXMLNode;
    var
      c: integer;
      ln: IXMLNode;
      s: ShortString;
    begin
      c:=0;
      while c <> XD.DocumentElement.ChildNodes.Count-1 do
      begin
        if VarToStr(XD.DocumentElement.ChildNodes[c].Attributes['id']) = L then
        begin
          ln:=XD.DocumentElement.ChildNodes[c];
          c:=XD.DocumentElement.ChildNodes.Count-1
        end else
        begin
          c:=c+1; {DEBUG(VarToStr(XD.DocumentElement.ChildNodes[c].Attributes['id'],L) } 
        end
      end;
      result:=ln
    end;

    К слову о невнимательности и "непримеченных слонах". Итак задачка: перебором найти в наборе данных нужную строку и вернуть в итоговый результате элемент набора данных. Используем код (выше). По невнимательности своей я допустил в алгоритме ошибку и функция работала несколько некорректно. Перед Вами её изначальный вариант, до исправления. Если вкратце, то баг заключался в том, что функция не читала последний элемент XML-документа. Называется, нефиг было мудрить с алгоритмом. По сути там надо убрать из двух мест "-1". Но пока я докапывался до сути ошибки, я написал тестовую функцию, сравнивающую две строки и выводящую результат сравнения в окно сообщения. Назовём её DEBUG. И... Началось непонятное. Функция выдавала сообщение, значит результаты, как видно по алгоритму, не равны, но она выдавала РАВЕНСТВО! Мозг взрывается, ломаются представления о математике и рациональности вообще!

    Xander_Bass, 18 Декабря 2010

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

    +113

    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
    [Localizable(false)]
        internal abstract class ClassAIndex : IDisposable
        {
            public static ClassAIndex Run()
            {
                ClassBIndex index = new ClassBIndex();
                index.initialize();
                return index;
            }
         
          // еще методы - абстрактные
       
        }
    
         internal class ClassBIndex : ClassAIndex
        {
             // тут имплементация
        }

    я заменил названия у ClassA &B. Надо ли упомянать что другого наследника от ClassA нет и не предвидится?
    Ну а localizable атрибут со значением по умолчанию у простого класса (не Component) это уже на сладкое.

    eval_2009, 02 Декабря 2010

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

    +113

    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
    public string UploadFileEx(string uploadfile, string url,string fileFormName, 
                string contenttype, NameValueCollection querystring, CookieContainer cookies
            ){
                if ((fileFormName == null) ||
                    (fileFormName.Length == 0))
                {
                    fileFormName = "file";
                }
    
                if ((contenttype == null) ||
                    (contenttype.Length == 0))
                {
                    contenttype = "application/octet-stream";
                }
    
    
                string postdata;
                postdata = "?";
                if (querystring != null)
                {
                    foreach (string key in querystring.Keys)
                    {
                        postdata += key + "=" + querystring.Get(key) + "&";
                    }
                }

    String.IsNullOrEmpty ??????
    http://code.google.com/p/habreffect-uploader/source/browse/trunk/clipboardUploader/Uploader.cs
    http://habrahabr.ru/blogs/net/108165/

    Nigma143, 15 Ноября 2010

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

    +113

    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
    static void mysql_update_values(string sensorname, string sensorvalue)
            {
                MySql.Data.MySqlClient.MySqlConnection conn;
                MySqlCommand cmd = new MySqlCommand();
                MySqlDataReader mysqlr;
                string myConnectionString;
    
                myConnectionString = "server=" + mysql_server + ";uid=" + mysql_login + ";pwd=" + mysql_password + ";database=" + mysql_db + ";";
                
                try
                {
                    conn = new MySql.Data.MySqlClient.MySqlConnection();
                    conn.ConnectionString = myConnectionString;
                    conn.Open();
                    if (conn.State == System.Data.ConnectionState.Open)
                    {
                        cmd.CommandText = "SELECT * FROM sensordata WHERE sensorname = '" + sensorname + "'";
                        log("DEBUG: mysqlcommand: " + cmd.CommandText);
                        cmd.Connection = conn;
                        cmd.Prepare();
                        mysqlr = cmd.ExecuteReader();
                        if (mysqlr.HasRows)
                        {
                            mysqlr.Close();
                            cmd.CommandText = "DELETE FROM sensordata WHERE sensorname = '" + sensorname + "'";
                            log("DEBUG: mysqlcommand: " + cmd.CommandText);
                            cmd.Connection = conn;
                            cmd.Prepare();
                            cmd.ExecuteNonQuery();
    
                            System.DateTime.Now.ToString() + "' WHERE sensorname = '" + sensorname + "'";
                            cmd.CommandText = "INSERT INTO sensordata VALUES('" + sensorname + "','" + sensorvalue + "','" + System.DateTime.Now.ToString() + "')";
                            log("DEBUG: mysqlcommand: " + cmd.CommandText);
                            cmd.Connection = conn;
                            cmd.Prepare();
                            cmd.ExecuteNonQuery();
                        }
                        else
                        {
    
                            
                            mysqlr.Close();
                            cmd.CommandText = "INSERT INTO sensordata VALUES('" + sensorname + "','" + sensorvalue + "','" + System.DateTime.Now.ToString() + "')";
                            log("DEBUG: mysqlcommand: " + cmd.CommandText);
                            cmd.Connection = conn;
                            cmd.Prepare();
                            cmd.ExecuteNonQuery();
                        }
                    }
                    log("mysql_update_values(" + sensorname + "," + sensorvalue + ")");
    
                }
                catch (MySql.Data.MySqlClient.MySqlException ex)
                {
                    log_e(ex.Message + ex.StackTrace);
                }
    
            }

    MySQL ждет!

    A1mighty, 10 Октября 2010

    Комментарии (0)
  7. Си / Говнокод #4318

    +113

    1. 1
    char anarch[sizeof(long double) * sizeof(long)];

    Задали одному студенту (5 курса, между прочим) написать программу для решения анаграмм...
    Перед вами фрагмент кода, где объявляется буфер для хранения слова.
    На вопрос "Зачем ты так написал?" ответ был: "Хотел избавиться от дефайнов и магических чисел".
    На вопрос о размере буфера ответ был: "Так ведь не бывает слов длиннее 40 букв".

    TarTar, 09 Октября 2010

    Комментарии (16)
  8. Pascal / Говнокод #4252

    +113

    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
    program n1;
    label one, two;
    begin
    asm
    mov bh,1
    mov bl,1
    mov dx,0
    mov ax,0
    one: inc dx
         mov cl,bl
         add bl,bh
         mov bh,cl
         cmp dx,6
         jne one
    
         mov al,bl
    two: inc dx
         mov cl,bl
         add bl,bh
         mov bh,cl
         cmp dx,10
         jne two
    
         add al,bl
         end;
    end.

    Так в КубГТУ на кафедре АПП изучают ассемблер.

    xyz, 14 Сентября 2010

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

    +113

    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
    double x, y;
    
    void InitializeComponent()
    {
        this.MouseClick += new MouseEventHandler(Form1_Click);
        this.Paint += new PaintEventHandler(Form1_Paint);
    }
    
    void Form1_Paint(object sender, PaintEventArgs e)
    {
        PointF p = new PointF(0, 0);
        PointF pp = new PointF((float)x, (float)y);
        e.Graphics.DrawPolygon(new Pen(Color.Black, 3), new PointF[2] { p, pp });
    }
    
    void Form1_Click(object sender, MouseEventArgs e)
    {
        x = e.X;
        y = e.Y;
    
        AsyncDraw(ref x, ref y);
    }
    
    void AsyncDraw(ref double x, ref double y)
    {
        x = x;
        y = y;
    }

    sergylens, 14 Августа 2010

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

    +113

    1. 1
    2. 2
    3. 3
    Guid RespondentId = Guid.NewGuid();
    
    if (RespondentId != Guid.Empty)

    ReFlexOn, 11 Августа 2010

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

    +113

    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
    const string newObjectName = "Новый объект";
    
            // формирует имя нового объекта
            string BuildNewObjectName()
            {
                var namesTaken = from node in objectAdapters where node.Name.Contains(newObjectName) select node.Name;
    
                int n = 0;
    
                // ищем максимальное число в конце имени
                if (namesTaken.Any())
                    n = namesTaken.Aggregate(n, (acc, name) =>
                        {
                            int current;
                            return (int.TryParse(name.Split().Last(), out current) && current > acc) ? current : acc;
                        });
    
                // возвращаем следующее
                return newObjectName + " " + (n+1).ToString();
            }

    Получение имени для нового объекта. Смесь различных техник. Не читаемо.

    Lehox, 04 Августа 2010

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