1. Список говнокодов пользователя eval_2009

    Всего: 20

  2. C# / Говнокод #4917

    +115

    1. 1
    pi.UserName = pi.UserName.Trim().TrimStart(',').Trim();

    удаление запятой между именем и фамилией если фамилии нет.

    eval_2009, 14 Декабря 2010

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

    +121

    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
    private static long generateUniqueSetID(DataContext context)
            {
                long id;
                do
                {
                    id = BitConverter.ToInt64(Guid.NewGuid().ToByteArray(), 0) - DateTime.UtcNow.Ticks;
                } while (s_sets.Contains(id));
    
                if (!context.Sets.Where(s => s.SetID == id).Any())
                {
                    s_sets.Add(id);
                    return id;
                }
    
                return generateUniqueSetID(context);
            }

    это как можно хоть с трудом и догадаться генерация уникального Id для вставки в таблицу. Таблицу чел делал сам и создавать ключик как int его никто не заставлял.

    eval_2009, 09 Декабря 2010

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

    +118

    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
    public IProjectController ProjectController
            {
                [System.Diagnostics.DebuggerNonUserCode]
                get
                {
                    return _widgets[0].Widget.ProjectController;
                }
                [System.Diagnostics.DebuggerNonUserCode]
                set
                {
                    foreach (var c in _widgets)
                        c.Widget.ProjectController = value;
                }
            }

    Коротко но зато как емко. Моя любимая часть это конечно аттрибуты - что бы дебаггер не заходил туда в момент отладки - а вдруг кто увидит

    eval_2009, 09 Декабря 2010

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

    +121

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    if (OnCreated != null)
                {foreach (EventHandler<CreatedEventArgs> handler in OnCreated.GetInvocationList())
                    {
                        handler(this, args);
                    }
    }

    человек слышал про GetInvocationList но когда его надо применять не понял - зато можно написать 4 строки вместо одной.
    В данном случае аналогом будет простой вызов OnCreated().

    eval_2009, 02 Декабря 2010

    Комментарии (2)
  6. 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)
  7. C# / Говнокод #4411

    +117

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    widgetPanel.ID = new Guid(String.Format("{0:D32}", widgetInfo.Id));
    
    // в другом месте
    
    var widgetId = Convert.ToInt32(widgetPanel.ID.ToString().Replace('-', '0').TrimStart('0'));

    Как узнать что именно надо класть на панель?
    Очень просто - брать ее id типа Guid, а искать в списке классов с id типа int

    Разумеется, никто не запрещал сделать что бы оба были guid, но это же совершенно не интересно.

    eval_2009, 21 Октября 2010

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

    +111

    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
    try
                {
                    Int16 y = 0, m = 0, d = 0, hh = 0, mm = 0, ss = 0, ms = 0, zn = 0;
                    if (Value.IndexOf("T") > 0)
                    {
                        Int16.TryParse(Value.Substring(0, 4), out y);
                        Int16.TryParse(Value.Substring(4, 2), out m);
                        Int16.TryParse(Value.Substring(6, 2), out d);
                        Int16.TryParse(Value.Substring(9, 2), out hh);
                        Int16.TryParse(Value.Substring(11, 2), out mm);
                        Int16.TryParse(Value.Substring(13, 2), out ss);
                        Int16.TryParse(Value.Substring(16, 2), out ms);
                        Int16.TryParse(Value.Substring(18, 3), out zn);
                        dt = new DateTime(y, m, d, hh, mm, ss, ms, DateTimeKind.Utc);
                    }
                    if (Value.IndexOf("T") == 0)
                    {
                        Int16.TryParse(Value.Substring(0, 2), out hh);
                        Int16.TryParse(Value.Substring(2, 2), out mm);
                        Int16.TryParse(Value.Substring(4, 2), out ss);
                        Int16.TryParse(Value.Substring(7, 2), out ms);
                        dt = dt.AddHours(hh).AddMinutes(mm).AddSeconds(ss).AddMilliseconds(ms);
                    }
    
                    dt.AddHours(-zn);
    
                catch (Exception ex)
                {
                    Console.Write(this.Value + "\r\n" + ex.ToString());
                }
    
              return dt;

    Разбор модифицированного iso 8601 формата даты и времени (без "-").
    не учитавается наличие/отсуствие даты или времени, длинная тайм зона, то что если нет T то это не время а дата. Естественно все обернуто в try/catch что бы никто не догадался.

    Так сказать особой утонченности придает строка dt.AddHours(-zn);
    (сколько уйдет у кого секунд что бы понять что с ней не так?)

    eval_2009, 10 Июня 2010

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

    +112

    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
    public static string ConvertBase64ToString(string b64)
            {
                string Value = b64;
                if (Value != null && Value.Length > 0)
                {
                    System.Text.ASCIIEncoding encoder = new System.Text.ASCIIEncoding();
                    System.Text.Decoder decoder = encoder.GetDecoder();
                    byte[] bytes = Convert.FromBase64String(Value);
                    int charCount = decoder.GetCharCount(bytes, 0, bytes.Length);
                    char[] chars = new char[charCount];
                    decoder.GetChars(bytes, 0, bytes.Length, chars, 0);
                    string results = new String(chars);
    
                    return results;
                }
                return string.Empty;
            }

    не говоря уже про локальную переменную Value, весь блок заменяется на
    return System.Text.ASCIIEncoding.ASCII.GetStrin g(Convert.FromBase64String(Value));

    eval_2009, 04 Июня 2010

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

    +139.4

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    var viewsId = new List<int>(views.Select(v => v.ViewId).Distinct());
    
    var sviewsId = "," + String.Join(",", viewsId.Select(i => i.ToString()).ToArray()) + ",";
    
    _total = (from d in context.TableA
                                      join uvd in context.TableB on d.DocID equals uvd.DocID
                                      join uv in context.TableC on uvd.ID equals uv.ID
                                      where sviewsId.IndexOf("," + uv.ID.ToString() + ",") > 0
                                      select d.DocID)
                                      .Distinct ()
                                      .Count ();

    Оригинальный способ обойти ограничение на 2100 параметров. А как быстро оно будет работать!
    views, разумеется, из того же контекста.

    eval_2009, 16 Декабря 2009

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

    +947.7

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    foreach (string id in sourceIDs.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
                {
                    sourceId = Convert.ToInt32(id);
                    break;
                }

    Как взять первую цифру в строке - конечно без цикла тут никак

    eval_2009, 03 Ноября 2009

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