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

    +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
    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
    static Concept()
            {
                s_deserialize = new Dictionary<string, deserializationHandler>
                                    {{"1.0", (deserialize_1_0)}};
            }
    
            private static void serialize(Concept concept, BinaryWriter writer)
      {
                writer.Write ( concept.Name );
                writer.Write ( concept.Score );
    
                writer.Write ( concept.Documents.Count );
                foreach (var doc in concept.Documents)
                    writer.Write(doc.ToString());
    
                writer.Write ( concept.Nested.Count );
                foreach (var nested in concept.Nested)
                    serialize ( nested, writer );
    }
    
           public static List<Concept> Deserialize(Stream stream)
            {
                using (var reader = new BinaryReader(stream, Encoding.UTF8))
                {
                    var version = reader.ReadString();
                    if (!s_deserialize.ContainsKey(version))
                        throw new NotSupportedException(String.Format("Unsupported version of format. Version: {0}", version));
    
                    var concepts = new List<Concept>(50);
                    s_deserialize[version](null, concepts, reader);
                    return concepts;
                }
            }
    
    private delegate void deserializationHandler(Concept parent, IList<Concept> concepts, BinaryReader reader);
    
    private static readonly Dictionary<string, deserializationHandler> s_deserialize;
    
      private static int s_lastId = 0;
           private static int getNextConceptId()
            {
                if (s_lastId == Int32.MaxValue)
                    s_lastId = 0;
                return System.Threading.Interlocked.Increment(ref s_lastId);
            }
    
    private static void deserialize_1_0(Concept parent, IList<Concept> concepts, BinaryReader reader)
    		{
                for (var i = reader.ReadInt32(); i > 0; i--)
    			{
                    var c = new Concept(reader.ReadString(), reader.ReadDouble(), parent);
    				concepts.Add(c);
    
                    for (var d = reader.ReadInt32(); d > 0; d--)
                        c.Documents.Add(Convert.ToInt32(reader.ReadString()));
    
    				deserialize_1_0(c, c.Nested, reader);
    			}
            }
    }

    Человек в очередной раз изобрел свой велосипед, на этот раз как сериализовать _свои_ классы - с поддержкой версий! По тому что некоторые переменные в классе были помечены [NonSerialized] было похоже что он что то слышал про уже имеющиеся но решил как обычно что самописный - всегда лучше. Но аттрибуты оставил - на всякий пожарный :)

    eval_2009, 13 Января 2011

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

    +117

    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
    public class A
    {
        private int field;
        public int Field { get { return field; } }
    
        public void Foo()
        {
             B.CreateInstance().A.field = 4;
        }
    }
    
    public class B
    {
        private static _b = null;
        private A _a = new A();
        public A { get { return _a; } }
    
        private B() {}
        public static B CreateInstance()
        {
             if (_b == null)
             {
                  _b = new B();
             }
             return _b;
        }
    }

    Встретил сегодня. Не мог не поделиться. Кода там много, поэтому выписал суть. CreateInstance() - это реальное название метода.

    t36, 12 Января 2011

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

    +116

    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
    public RabotaJurnal(string ceh, string kod, string nameN, string nameM, string nameP, string shet, string tip, string statya, string obj, string nomen, string edIzm, double normaTime, double normaVir, double rascenka, DateTime dateFrom, DateTime dateTo)
    {
                   Ceh = ceh;
                   Kod = kod;
                   NameN = nameN;
                   NameM = nameM;
                   NameP = nameP;
                   Shet = shet;
                   Tip = tip;
                   Statya = statya;
                   Obj = obj;
                   Nomen = nomen;
                   EdIzm = edIzm;
                   NormaTime = normaTime;
                   NormaVir = normaVir;
                   Rascenka = rascenka;
                   DateFrom = dateFrom;
                   DateTo = dateTo;
    }

    Конструктор =)

    Guid, 12 Января 2011

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

    +122

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    /// <summary>
    /// I hate you guys.
    /// You guys are assholes.
    /// Especially author of this class.
    /// I hate him the most.
    /// </summary>
    public partial class ProfileEditor

    Semargl, 11 Января 2011

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

    +104

    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
    public class BuildActivity     
     {
            private class RequestLimit : ICloneable
            {
                 //несколько свойств
            }
    
            private class Request : IDisposable
            {
               // оберка вокруг stream      
            }
    
            private class Response
            {
                // несколько методов
            }
    
            private class Document        
            {
                // 4 простых свойства
            }
    
           //примерно с десяток методов   
    }

    еще один пример навороченных структур на ровном месте. В достаточно простом классе имеем 4 (sic!) private вложенных класса - которые ниоткуда никем больше не используются. Все потому что человек не умел дизайнить классы так что бы не приходилось временные данные передавать из одной процедуры в другую. Страшно представить что он будет писать когда узнает про Tupels :)

    eval_2009, 11 Января 2011

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

    +120

    1. 1
    2. 2
    3. 3
    4. 4
    if (Game1.clou == true)
                {Game1.clou = false;}
                else
                { Game1.clou = true; }

    Не знаю, как могло моё усталое воображение родить это, вместо
    Game1.clou = !Game1.clou

    Falcon, 10 Января 2011

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

    +123

    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
    WebClient webClient = new WebClient();
                int i = 1;
                while (true)
                {
                    try
                    {
                        webClient.DownloadFile("http://sayt.ru/" + i.ToString() + ".exe", @i.ToString() + ".exe");
                        number += 1;
                                           
                    }
                    catch
                    {
                     break; 
                    }
             }

    qbasic, 09 Января 2011

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

    +116

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
            {
                label5.Text = Convert.ToInt32(e.X.ToString()).ToString();
                label6.Text = Convert.ToInt32(e.Y.ToString()).ToString();
                label1.Location = new Point(e.X, e.Y);
            }

    Не знаю лаба это или нет, но взято это с www.cyberforum.ru

    psina-from-ua, 07 Января 2011

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

    +126

    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
    if (_documentsCount < 0)
                {
                    var docs = new HashSet<int>();
    
                    _manager.WalkThroughConcepts(delegate(Concept concept, CancelEventArgs cargs)
                                                     {
                                                         foreach (var doc in concept.Documents)
                                                             docs.Add(doc);
                                                     });
    
                    _documentsCount = docs.Count;
                }
    
                return _documentsCount;

    Как сосчитать количество документов в дереве? очень просто - надо всех их добавить в один список (и для этого сделать цикл в каждом узле, разумеется) а потом вернуть количество элементов в списке.

    eval_2009, 06 Января 2011

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

    +116

    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
    public delegate IEnumerable<int> ProcessStrategy();
    
            public class ProcessEventArgs: EventArgs
            {
                public ProcessStrategy { get; set; }
            }
    
            public IEnumerable<int> GetSelectedDocuments()
            {
                var args = new ProcessEventArgs();
    
                if (args.Strategy == null)
                {
                    args.Strategy = delegate()
                                        {
                                            var result = new HashSet<int>();
                                            WalkThrough(
                                                delegate(ConceptInfo concept, CancelEventArgs cargs)
                                                {
                                                    foreach (var doc in concept.Documents)
                                                        result.Add(doc);
                                                }, State.Selected);
                                            return result;
                                        };
                }
    
                return args.Strategy();
            }

    Обьявляем делегат, потом обьявляем класс от EventArgs в котором (в EventArgs!) будет передаваться этот самый делегат.
    Потом в нужном методе создаем экземпляр класса ProcessEventArgs, проверяем делегат на null - откуда он берется не null в только что созданном непонятно, но помним про прикол с Manager singleton того же автора :), присваеваем его делегату собственно код который и совершает необходимые операции, а потом....
    Потом просто вызываем свежесозданый делегат.

    eval_2009, 06 Января 2011

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