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

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

    +117

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    @if(@Html.Raw(message.Summary).ToString().IndexOf("Добавлен комментарий") >= 0) { 
                                    <a href="@href">
                                        @Html.Raw(@message.Summary)
                                   </a>
                                }

    Arbium, 16 Марта 2012

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

    +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
    private             void    _Filter             (ref DataTable Dt)
            {
                if (Dt.Columns.Contains("id_rvobjecttype") && Dt.Columns.Contains("id_rvdevicestatus") && Dt.Columns.Contains("id_storage") && 
                   (RvObjectType > 0 || Status > 0 || Storage > -1))
                {
                    DataRow[]   rows    =   Dt.Select(string.Format(
                        "((id_rvobjecttype = {0} or not {1}) and (id_rvdevicestatus = {2} or not {3}) and (id_storage = {4} or not {5})) or id = {6}", 
                        fRvObjectType, fRvObjectType > 0, (int)Status, Status > 0, Storage, Storage > -1, IgnoreId));
    
                    Dt                  =   rows.Length > 0 ? rows.CopyToDataTable() : Dt.Clone();
                }
            }

    gcoder, 29 Февраля 2012

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

    +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
    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
    /// <summary>
    /// Преобразование элемента перечисления в строку
    /// </summary>			
    private String GetEnumElementString(Object e, Type t)
    {
    	string result = string.Empty;
    
    	if (t == typeof(AccessMode))
    	{
    		if ((AccessMode)e == AccessMode.CacheOnly)
    		{
    			result = LocalStrings.AccessMode_CacheOnly_RU;
    		}
    		else if ((AccessMode)e == AccessMode.ServerOnly)
    		{
    			result = LocalStrings.AccessMode_ServerOnly_RU;
    		}
    		else if ((AccessMode)e == AccessMode.ServerAndCache)
    		{
    			result = LocalStrings.AccessMode_ServerAndCache_RU;
    		}
    		else
    		{
    			throw new Exception(string.Format("Отсутствует конвертация перечисления {0} к списку строк.", e));
    		}
    	}
    	else if (t == typeof(MapImageType))
    	{
    		if ((MapImageType)e == MapImageType.Map)
    		{
    			result = LocalStrings.MapImageType_Map_RU;
    		}
    		else if ((MapImageType)e == MapImageType.Satellite)
    		{
    			result = LocalStrings.MapImageType_Sattelite_RU;
    		}
    		else if ((MapImageType)e == MapImageType.Hybrid)
    		{
    			result = LocalStrings.MapImageType_Hybrid_RU;
    		}
    		else
    		{
    			throw new Exception(string.Format("Отсутствует конвертация перечисления {0} к списку строк.", e));
    		}
    	}
    	else
    	{
    		throw new Exception(string.Format("Отсутствует конвертация перечисления {0} к списку строк.", e));
    	}
    
    	return result;
    }

    Конвертация Enum в строку. Аффтар уникален, и это лишь одно из проявлений его уникальности.
    Swith - для трусов, статические тулзы и Extension - для дураков. У нас для этого будут методы классов, между прочим класс, в который входит этот метод - UserControl.
    Кстати, поля LocalStrings - не константы, а статика:

    public static string AccessMode_CacheOnly_RU = "Только кэш"; ....

    ICELedyanoj, 08 Февраля 2012

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

    +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
    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
    [TestInitialize]
            public void Init()
            {
                relashions = new List<PersonRelationship>();
                relashions.Add( new PersonRelationship()
                {
                    PersonId = 1,
                    RalationshipPersonId = 2,
                    RelationshipTypeId = (int)DAL.Dictionaries.RelationshipType.Friend
                });
    
                relashions.Add(new PersonRelationship()
                {
                    PersonId = 1,
                    RalationshipPersonId = 2,
                    RelationshipTypeId = (int)DAL.Dictionaries.RelationshipType.Friend
                });
                
                relashions.Add(new PersonRelationship()
                {
                    PersonId = 2,
                    RalationshipPersonId = 1,
                    RelationshipTypeId = (int)DAL.Dictionaries.RelationshipType.Friend
                });
            }
    
    [TestMethod()]
            public void GetMyFriends_Get_Success()
            {
                long personId = 1;
    
                var relationService = new Mock<IRelationService>();
                relationService.Setup(c => c.GetMyFriends(personId)).Returns
                    (
                        from rl in relashions.Where(r => r.PersonId == personId && r.RelationshipTypeId == (int)DAL.Dictionaries.RelationshipType.Friend)
                        select new PersonShortDescriptionViewModel()
                        {
                            FirstName = personId.ToString(),
                            LastName = personId.ToString(),
                        }
                     );
    
                var friends = relationService.Object.GetMyFriends(personId);
                Assert.IsNotNull(friends);
            }

    Найден правильный метод написания тестов!

    Hych, 24 Января 2012

    Комментарии (4)
  6. Pascal / Говнокод #6585

    +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
    program Project1;
    {$APPTYPE CONSOLE}
    uses
      SysUtils;
    Var
      a,b : Integer;
      c : Extended;
    BEGIN
     readln(a,b);
    TRY
     c := sqrt(a-b);
     WriteLn('A > B');
    EXCEPT
     WriteLn('A < B');
    END;
     ReadLn;
    END.

    Дело было вечером, делать было нечего, решил just for education порешать пару задач по программированию. Залез значит в Зултрк, ищу. На глаза сразу попалась небольшая книжица с названием "128 Задач по началам программирования." В.В Пупырышева. Скачал, начал решать. И вот какая задачка мне попалась:
    "II-15*. Максимум из двух
    Напишите программу, которая запрашивает джва числа и сообщает, какое из них больше другого."

    Вроде бы ничего сложного, но ВНЕЗАПНО у задачи обнаружилось примечание: "Эта задача должна быть решена без использования ветвления." Первая мысль, пришедшая в голову, была использовать функции, но ведь и они подразумевали ветвление. Так что начался мозговой штурм. После получаса раздумий, высралось ЭТО. В конце, посмотрев в ответы, я просто охренел. Спойлер: "Эта задача представляет собой подготовку к следующей ступени (задачи с ветвлением). Но решить её можно и без использования ветвлений, если придумать две формулы для вычилсения максимума и минимума из двух чисел. Тогда если обозначить исходные числа как Х и Y, а упомянутые формулы - как MAX(x,y) и MIN(x,y) соответственно, то для получения правильного ответа достаточно будет вывести строку типа: "Число-", MAX(x,y), "-не меньше числа -", MIN(x,y)." После этого я книгу с компа удалил, не помещая в корзину.

    Govnocoder#0xFF, 07 Мая 2011

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

    +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
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    WorksheetRow row = new WorksheetRow();
    row.Cells.Add("");
    
    // ispublished
    row.Cells.Add(point.IsPublished ? "+" : "");
    
    // id superregion
    row.Cells.Add(point.Town.Region.SuperRegion.Id.ToString());
    
    // name superregion
    if (cleanupTags)
    	row.Cells.Add(CleanXMLTags(point.Town.Region.SuperRegion.Name));
    else row.Cells.Add(point.Town.Region.SuperRegion.Name);
    
    // id rregion
    row.Cells.Add(point.Town.Region.Id.ToString());
    
    // name region
    if (cleanupTags)
    	row.Cells.Add(CleanXMLTags(point.Town.Region.DefaultText.Name));
    else row.Cells.Add(point.Town.Region.DefaultText.Name);
    
    ...
    
    StringBuilder subwayIDs = new StringBuilder("");
    StringBuilder subwayNames = new StringBuilder("");
    foreach (Subway subway in point.Subways)
    {
    	subwayIDs.Append(subway.Id).Append(", ");
    	subwayNames.Append(subway.DisplayName).Append(", ");
    }
    string sIDs = subwayIDs.ToString();
    if (sIDs.Length > 0) sIDs = sIDs.Substring(0, sIDs.Length - 2);
    
    string sNames = subwayNames.ToString();
    if (sNames.Length > 0) sNames = sNames.Substring(0, sNames.Length - 2);

    Это 10% от метода. Там все в том же духе.

    ShurikEv, 14 Апреля 2011

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

    +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
    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
    int massaotves = 0;
                        var result = db.Vesi500.SingleOrDefault(x => x.Id_vesi500 == 10);
                        massaotves = Convert.ToInt32(result.Value_vesi500);
                        int step500 = 0;
                        //int ost1 = summ500 % massaotves;
                        //if (ost1 == 0)
                        //    step500 = summ500 / massaotves;
                        //else
                        //    step500 = (summ500 / massaotves) + 1;
    
                        int ost1 = summ500 % 450;
                        if (ost1 == 0)
                            step500 = summ500 / 450;
                        else
                            step500 = (summ500 / 450) + 1;
                        #endregion
    
                        #region Отвесы и суммы для 200 весов
                        int massaotves200 = 0;
                        var result1 = db.Vesi200.SingleOrDefault(x => x.Id_vesi200 == 9);
                        massaotves200 = Convert.ToInt32(result1.Value_vesi200);
                        int step200 = 0;
                        //int ost2 = summ200 % massaotves200;
                        //if (ost2 == 0)
                        //    step200 = summ200 / massaotves200;
                        //else
                        //    step200 = (summ200 / massaotves200) + 1;
                        
                        int ost2 = summ200 % 180;
                        if (ost2 == 0)
                            step200 = summ200 / 180;
                        else
                            step200 = (summ200 / 180) + 1;
                        #endregion                   
    
    
                        int itog = 0;
                        //if (step200 > step500)
                        //    itog = step200;
                        //else
                        //    itog = step500;
    
                        int test = (summ200 + summ500) / massaotves200;
                        if (test >= step500 && test >= step200)
                            itog = test;
                        else if (step200 > step500)
                            itog = step200;
                        else   
                            itog = step500;
    
                        textBox3.Text = Convert.ToString(itog);
                        vsegootvesov = itog;

    Выполняет расчет необходимых показателей, для запуска технологического процесса

    fxlancer, 05 Апреля 2011

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

    +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
    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
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Caeser_method
    {
        class Program
        {
            static void Main(string[] args)
            {
                int n = 3;
                Console.Write("Input string to encoding: ");
                string input = Console.ReadLine();
                Csr enc = new Csr(n,input);
               // Csr dec;
                enc.encrypt();
                Console.WriteLine(enc);
               // dec = new Csr(n, input);
                enc.decrypt();
                
                Console.WriteLine(enc);
                Console.ReadLine();
            }
        }
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Caeser_method
    {
        class Csr
        {
            public int n;
            public string phraze,outputphr;
            public Csr(int n, string phraze) 
            {
                this.n = n;
                this.phraze = phraze;
                this.outputphr = "";
            }
    
            
            public void encrypt() 
            {
                foreach (char c in this.phraze)
                    if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'))
                    {
                        if (char.IsLetter(c)) this.outputphr += (char)(char.IsUpper(c) ?
                                                                          (c + this.n > 'Z' ? ('A' + ((c -'Z'  + (this.n - 1)))) : (c + this.n)) :
                                                                          (c + this.n > 'z' ? ('a' + ((c - 'z' + (this.n - 1)))) : (c + this.n)));
                        else this.outputphr += c;
                    }
                    else
                    {
                        if (char.IsLetter(c)) this.outputphr += (char)(char.IsUpper(c) ?
                                                                          (c + this.n > 'Я' ? ('А' + ((c - 'Я' + (this.n - 1)))) : (c + this.n)) :
                                                                          (c + this.n > 'я' ? ('а' + ((c - 'я' + (this.n - 1)))) : (c + this.n)));
                        else this.outputphr += c;
                    }
            }
    
    
            public void decrypt()
            {
                this.phraze = this.outputphr;
                this.outputphr = "";
                foreach (char c in this.phraze)
                    if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'))
                    {
                        if (char.IsLetter(c)) this.outputphr += (char)(char.IsUpper(c) ?
                                                                          (c - this.n < 'A' ? ('Z' - (('A' - c + (this.n - 1)))) : (c - this.n)) :
                                                                          (c - this.n < 'a' ? ('z' - (('a' - c + (this.n - 1)))) : (c - this.n)));
                        else this.outputphr += c;
                    }
                    else
                    {
                        if (char.IsLetter(c)) this.outputphr += (char)(char.IsUpper(c) ?
                                                                          (c - this.n < 'А' ? ('Я' - (('А' - c + (this.n - 1)))) : (c - this.n)) :
                                                                          (c - this.n < 'а' ? ('я' - (('а' - c + (this.n - 1)))) : (c - this.n)));
                        else this.outputphr += c;
                    }
            }
    
            public override string ToString()
            {
                return string.Format("Encoded string: {0}",this.outputphr);
            }
    
        }
    }

    Реализация шифрования методом Цезаря

    rybaki, 27 Марта 2011

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

    +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
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    public static class EventExtensions
        {
            public static void Fire(this EventHandler eventHandler, object sender)
            {
                eventHandler.Fire(sender, EventArgs.Empty);
            }
    
            public static void Fire(this EventHandler eventHandler, object sender, EventArgs args)
            {
                eventHandler.FireDelegate(sender, args);
            }
    
            public static void Fire<TEA>(this EventHandler<TEA> eventHandler, object sender, TEA args)
                where TEA : EventArgs
            {
                eventHandler .FireDelegate(sender, args);
            }
    
            public static void FireDelegate(this Delegate eventHandler, params object[] parameters)
            {
                if (eventHandler != null)
                {
                    Delegate[] delegates = eventHandler.GetInvocationList();
                    foreach (var del in delegates)
                    {
                        try
                        {
                            del.Method.Invoke(del.Target, parameters);
                        }
                        catch (Exception e)
                        {
                            // use logger here
                            throw;
                        }
                    }
                }
            }
        }

    Надоело писать инвокаторы для ивентов? Как тебе это?

    walash, 21 Февраля 2011

    Комментарии (4)
  11. 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)