1. C# / Говнокод #3134

    +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
    void listXmlTree(string filename)
            {
                XmlTextReader rdr = new XmlTextReader(filename);
    
                listBox1.Items.Clear();
                treeView1.Nodes.Clear();
                while (rdr.Read())
                {
                    string s = string.Format("<{0}> - {1}", rdr.Name, rdr.NodeType);
                    listBox1.Items.Add(s);
    
                    if ((rdr.Name == "LVL") && (rdr.NodeType != XmlNodeType.EndElement))
                    {
                        treeView1.Nodes.Add("LVL " + rdr.GetAttribute("N"));
                        while (rdr.Read())
                        {
                            if ((rdr.Name == "WRD") && (rdr.NodeType != XmlNodeType.EndElement))
                            {
                                treeView1.Nodes[treeView1.Nodes.Count - 1].Nodes.Add("WRD");
                                while (rdr.Read())
                                {
                                    if ((rdr.Name == "L") && (rdr.NodeType != XmlNodeType.EndElement))
                                    {
                                        treeView1.Nodes[treeView1.Nodes.Count - 1].Nodes[treeView1.Nodes[treeView1.Nodes.Count - 1].Nodes.Count - 1].Nodes.Add("L: " + rdr.ReadElementContentAsString());
    
                                    }
                                    if ((rdr.Name == "K") && (rdr.NodeType != XmlNodeType.EndElement))
                                    {
                                        treeView1.Nodes[treeView1.Nodes.Count - 1].Nodes[treeView1.Nodes[treeView1.Nodes.Count - 1].Nodes.Count - 1].Nodes.Add("K: " + rdr.ReadElementContentAsString());
                                        break;
                                    }
                                }
                            }
                            if ((rdr.Name == "CHS") && (rdr.NodeType != XmlNodeType.EndElement))
                            {
                                treeView1.Nodes[treeView1.Nodes.Count - 1].Nodes.Add("CHS: " + rdr.ReadElementContentAsString());
                                break;
                            }
    
                        }
                    }
    
                }
                rdr.Close();
            }

    Такие дела.

    t8apb, 30 Апреля 2010

    Комментарии (40)
  2. C# / Говнокод #3117

    +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
    // Дефолтный конструктор:
     public Random() 
            : this(Environment.TickCount) {
          }
    
    // Перенаправляемся сюда...
        public Random(int Seed) {
            int ii;
            int mj, mk;
        
            //Initialize our Seed array.
            //This algorithm comes from Numerical Recipes in C (2nd Ed.)
            mj = MSEED - Math.Abs(Seed);

    Очередной "изящный" говнокод в исходниках .NET.
    Говнокод в том, что Environment.TickCount через каждые 24,9 дней возвращает Int32.MinValue, который скормится Math.Abs, который резонно выкинет исключение OverflowException. Вроде бы мелочь, но... Вспомним теперь падение .NET-софта на Лондонской бирже и последующие миллионные убытки. Для загруженных non-stop-серверов непростительно. Хотя в принципе Microsoft аптаймами и не славился :)

    cfdev, 27 Апреля 2010

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

    +111

    1. 1
    2. 2
    3. 3
    4. 4
    try {} finally {
             retVal = NativeMethods.CreateProcess ( /* ... */ );
            /* ... и дальше остальной код... */
    }

    Откопано в исходниках .NET 2.0 Framework, так реализуется Process.Start. Не очень понял замысла. Нашёл, что finally обязательно продолжит исполняться, если во время его исполнения на поток ВНЕЗАПНО вызван метод Abort. Т.е. если потоку, создающему процесс, сделать аборт, процесс всё равно упорно создаcтся и запустится (чистки памяти я не нашёл). В чём смысл? Так можно было бы тогда всякий код оборачивать в finally... Ящитаю, что это всё костыли вокруг говноархитектуры. Не зря в Яве Thread.stop сделали deprecated. А вы как считаете?

    cfdev, 27 Апреля 2010

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

    +118.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
    private ArrayList SortListings(ArrayList _listings)
            {
                ArrayList result = new ArrayList();
                ArrayList company_names = new ArrayList();
                Hashtable entities = new Hashtable();
    
                foreach (ListOfListings l in _listings)
                {
                    try
                    {
                        entities.Add(l.ListingName, l);
                        company_names.Add(l.ListingName);
                    }
                    catch
                    {
                    }
                }
    
                company_names.Sort();
                for (int i = 0; i < company_names.Count; i++)
                {
                    result.Add(entities[company_names[i]]);
                }
                return result;
            }

    Сортировка :)

    bugotrep, 18 Апреля 2010

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

    +116.6

    1. 1
    2. 2
    3. 3
    4. 4
    public AbstractCriterion NoPennisMatch(string fieldName, int value)
    {
    	return Restrictions.Between("qnum", Decimal.Parse(value.ToString()), Decimal.Parse(value.ToString() + ".99"));
    }

    такой вот метод :)

    Coffeeholic, 17 Апреля 2010

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

    +126

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    try
    {
         ....
         com.ExecuteNonQuery();
    }
    catch (Exception ex) { }
            finally
            {
                con.Close();
      }

    ASP.NET
    Вот так вот обрабатываем ошибки, за которые получаем ПИЗДЫ.
    Интересно а откуда ж нам об них узнатьтаа :)))

    otvet_popravkodon, 13 Апреля 2010

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

    +116.4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    string text = MyReader[2].ToString();
        tt = new TableRow();
        string css_clss = (text == "ИТОГО") ? "gr1" : "gr2";
        int lvl = Convert.ToInt32(MyReader[1].ToString());     
        tt.CssClass = css_clss;

    ASP.NET
    //Это просто в ТОП 1. Выхватывать уровень группировки SQL по слову ИТОГО, учитывая что слово Итого может изменится и процедура возвращает уровень. lvl = 5 это ИТОГОВЫЙ уровень

    otvet_popravkodon, 13 Апреля 2010

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

    +121.8

    1. 1
    int lvl = Convert.ToInt32(reader[0].ToString());

    ASP.NET
    Из текста это получается лучше сделать
    reader = SqlDataReader

    otvet_popravkodon, 13 Апреля 2010

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

    +117.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
    string GetTextDiv2(string text)
        {
            int mid = text.Length / 2;
            int r = text.IndexOf(" ", mid); if (r < 0) r = 5000;
            int l = text.IndexOf(" ", 0, mid); if (l < 0) l = 5000;
            if (r - mid > mid - l) // to left is closer
                mid = l;
            else mid = r;
    
            if (mid == 5000) return "&nbsp" + text;
            return "&nbsp" + text.Substring(0, mid) + " <br/>&nbsp" + text.Substring(mid, text.Length - mid);
        }

    ASP.NET
    // это красота просто :) делим текст пополам там где пробел, а дальше добавляем между частями перенос на новую строку :)

    otvet_popravkodon, 13 Апреля 2010

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

    +971.8

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    oi.Status = o.Active && o.ByCondition!=Condition.None && o.Time==DateTime.MinValue 
       ? OrderStatusType.Condition :
        o.Active
         ? OrderStatusType.Active
         : o.Cancelled
          ? OrderStatusType.Cancelled
          : o.Matched ? OrderStatusType.Matched : OrderStatusType.Unknown;

    Суровый такой, очень суровый код. Спартанец-неформал.

    terR0Q, 13 Апреля 2010

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