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

    +131

    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
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    namespace CA1
    {
        class Program
        {
            static void Main()
            {
                int buffer;
                int Cout = 0;
                string line;
                System.IO.StreamReader file = new System.IO.StreamReader("file.txt");
                while ((line = file.ReadLine()) != null)
                {
                    buffer = Convert.ToInt32(line);
                    if(buffer > 0)
                    {
                        if(buffer / 2 > 5 && buffer / 2 < 49.5)
                        {
                            Cout++;
                        }
                    }
    
                    if (buffer < 0)
                    {
                        if (buffer / 2 < - 5 && buffer / 2 > - 49.5)
                        {
                            Cout++;
                        }
                    }
                }
                Console.WriteLine(Cout);
                Console.ReadLine();
            }
        }
    }

    Вычисление количества цифр в числе

    LightningAtom, 20 Ноября 2014

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

    +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
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    public void SelectStep(int stepNumber)
    {
        //1.HTTPCore
        //2.find cat
        //3find p.cat
        //4.find products
        //5.parse products info
        //6.save
        //7.complete
        if (stepNumber != 1) ((Label)(this.panel.Controls.Cast<Control>()
            .First(c => c.TabIndex == stepNumber - 1))).ForeColor = Color.Black;
        ((Label)(this.panel.Controls.Cast<Control>()
            .First(c => c.TabIndex == stepNumber))).ForeColor = Color.Red;
        if (stepNumber == 6)
        {
            labelStatusSecondLine.ForeColor = Color.Black;
            labelStatusFirstLine.Text = "Готово."; buttonStart.Enabled = buttonRefreshCats.Enabled = true; timer.Stop();
        }
        if (stepNumber == 7)
        {
            labelStatusSecondLine.Text = "Обновление категорий...";
        }
    }

    Досталось в наследство. Слегка переписано мной (ранее у всех лейблов были имена вроде "label1" – к лейблам аффтар обращался по распарсенным оттуда цифрам).

    pushistayapodmyshka, 20 Ноября 2014

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

    +136

    1. 1
    2. 2
    3. 3
    public override string GetMobileBody() {
    	return System.Text.Encoding.UTF8.GetString(new Terrasoft.Common.CompressionUtilities().UnZip(new byte[] { 31,139,8, /*... over 9000 bytes ...*/,36,59,0,0 }));
    }

    По долгу службы пришлось столкнуться с одной небезызвестной CRM отечественного производства.
    Безумно интересен сакральный смысл такого кода.

    lorond, 13 Ноября 2014

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

    +134

    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
    95. 95
    96. 96
    class ParametersArray
    {
            ...
            /// <summary>
            /// Копирующей конструктор (создает копию коллекции)
            /// </summary>
            /// <param name="prs">Коллекция на основе, которой будет создаваться копия</param>
            public ParametersArray(ParametersArray prs)
            {
                paParameters = new ArrayList();
                for (int i = 0; i < prs.Count; i++)
                {
                    Parameter p = new Parameter(prs[i]);
                    paParameters.Add(p);
                }
            }
            ...
            #region Внутренние состояния
    
            /// <summary>
            /// Внутреннее поле - массив параметров
            /// </summary>
            private ArrayList paParameters;
    
            /// <summary>
            /// Внутреннее поле – идентификатор операции, к которой относятся параметры
            /// </summary>
            private string paOperationId = "";
    
            #endregion
            /// <summary>
            /// Удаляет параметр из коллекции
            /// </summary>
            /// <param name="parameterId">Идентификатор параметра</param>
            public void Delete(string parameterId)
            {
                ArrayList list = new ArrayList();
    
                foreach (Parameter prt in paParameters)
                {
                    if (prt.Id.Trim() != parameterId.Trim())
                    {
                        list.Add(prt);
                    }
                }
                paParameters = list;
            }
        }
    }
    
    ...
    
      /// <summary>
      /// Класс для поиска и обработки шаблонов в параметрах операций
      /// </summary>
      public class Parser
      {
        ...
        #region Конструкторы
    
        /// <summary>
        /// Конструктор инициализирующей класс
        /// </summary>
        /// <param name="requestUserId">ID пользователя, который используется для обработки шаблона ##USER()</param>
        public Parser(string requestUserId)
        {
          pParameters = null;
          pUserId = requestUserId;
        }
    
        #endregion
    
        #region Внешние методы
    
        /// <summary>
        /// Метод перебирает все параметры операции, ищет там шаблоны и заменяет их значениями
        /// </summary>
        /// <param name="opr">Операция</param>
        /// <returns>Операция с обработанными шаблонами</returns>
        public Operation Parse(Operation opr)
        {
          pParameters = new ParametersArray(opr.Parameters);
    
          for (int i = 0; i < pParameters.Count; i++)
            if (FindTemplate(pParameters[i]))
            {
              ReplaceTemplate(pParameters[i]);
    
              //Удаляет параметр с ошибкой
              if (pParameters[i].Value == "parse err")
                pParameters.Delete(pParameters[i].Id);
            }
    
          opr.Parameters = new ParametersArray(pParameters);
          return opr;
        }

    Внимание привлекает код в строках 81-95

    В строке 81-82 мы создаём временную копию параметров операции opr во внутреннем поле класса Parser. Прекрасно. Ещё раз - в публичном в методе инициализируем внутреннее поле (Классный side effect - поле используется в других методах).

    В строке 91 удаляет элемент из внутренней коллекции, пересоздавая коллекцию целиком, то есть требования к памяти временно удваиваются на выходе из метода Delete (до очистки памяти). В методе Delete. Да. Супер.
    потом инициализируем вновь созданной коллекцией публичное поле Parameters во входящем параметре opr метода Delete.

    P.S.: Диагноз - хроническая форма неизлечимой Java. Во первых, автор этих строк искренне думает, что в природе ничего, кроме коллекции ArrayList, не существует. Во вторых, для удаления элемента коллекции мы пересоздаём всю коллекцию целиком, то есть видимо искренне полагая, что коллекция ArrayList - immutable, как и все поля класса Parser (типа ParametersArray) равно как и поле класса ParametersArray (типа ArrayList). Занавес.

    Говнокодище.

    hack2root, 10 Ноября 2014

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    int i=1;
    Console.WriteLine((i+null)==null); //True			
    Console.WriteLine(1+null);             //1
    Console.WriteLine(null+1);             //1
    Console.WriteLine((1+null).GetType()); //System.Int32

    http://ideone.com/LomfRC

    3.14159265, 07 Ноября 2014

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

    +133

    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
    [DataContract]
            class outColumnsList
            {
    ...
                [DataMember]
                public decimal? FK_ID_OBJECT { get; set; }
    ...
                [DataMember]
                public decimal? IS_PK { get; set; }
                [DataMember]
                public decimal? IS_EDIT { get; set; }
    ..
            }
    ....
                    List<outColumnsList> l = new List<outColumnsList>();
                    while (r.Read())
                    {
                        outColumnsList l1 = new outColumnsList();
                        if (r.GetOracleValue(0).ToString()!="null")
                        l1.ID_OBJECT = Convert.ToDecimal(r.GetOracleValue(0).ToString());
                        l1.NM_DISPLAY = r.GetOracleValue(1).ToString();
                        l1.NM_SOURCE = r.GetOracleValue(2).ToString();
                        if (r.GetOracleValue(3).ToString() != "null")
                        l1.DISPLAY_SIZE = Convert.ToDecimal(r.GetOracleValue(3).ToString());
                        if (r.GetOracleValue(4).ToString() != "null")
                        l1.FK_ID_OBJECT = Convert.ToDecimal(r.GetOracleValue(4).ToString());
                        if (r.GetOracleValue(5).ToString() != "null")
                        l1.ORDER_DISPLAY = Convert.ToDecimal(r.GetOracleValue(5).ToString());
                        if (r.GetOracleValue(6).ToString() != "null")
                        l1.IS_EDIT = Convert.ToDecimal(r.GetOracleValue(6).ToString());
                        if (r.GetOracleValue(7).ToString() != "null")
                        l1.IS_PK = Convert.ToDecimal(r.GetOracleValue(7).ToString());
                        l1.FK_FIELD = r.GetOracleValue(8).ToString();
                        l1.NM_SOURCE_FK = r.GetOracleValue(10).ToString();
                        l.Add(l1);
                    }

    это потрясающе. в качестве идентификатора использовать дробные числа... хорошо хоть не с плавающей запятой.
    а так же, их же, для булевых....

    а то, как они из базы читались, так это вообще сказка.
    все ToString(), и все ConvertToDecimal... и проверка, на null еще тоже на уровне. про IsDBNull явно не слышал ничего

    Lokich, 07 Ноября 2014

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

    +141

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    /// <summary>
    /// Массив весов для генерации КС длиной в 60 символов
    /// </summary>
    private static int[] weightsArray = new int[]
    { 7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1};

    Цикл? Нееее, надёжнее ведь руками забить!

    NeoN, 05 Ноября 2014

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

    +142

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    string.Format(
        "{0}{3}{1}{4}{2}",
        MrzRfid.Split(';')[0],
        MrzRfid.Split(';')[1],
        MrzRfid.Split(';')[2],
        Environment.NewLine,
        Environment.NewLine);

    Есть строка, которая состоит из 3х логических частей, разделеных символом ';'.
    Этот код разбивает эти 3 части по строкам

    NeoN, 05 Ноября 2014

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

    +137

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    //Перевести строку в JSON
    #region ConvertToJson
    public static string ConvertToJson(string str)
    {
        return str.Replace(@"/", string.Empty).Replace(@"~", string.Empty).Replace(@":", string.Empty).Replace(@"{", string.Empty).Replace(@"}", string.Empty).Replace("\"", string.Empty).Replace(",", string.Empty).Replace("\n", string.Empty);
    }
    #endregion

    json сериализатор из строки в строку, написанный в одну строчку

    Lokich, 05 Ноября 2014

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

    +133

    1. 1
    2. 2
    3. 3
    TopPassGridBox.ItemsSource = CollectionViewSource.GetDefaultView((from t in Edit_Curent_Pass.PassFieldList
    	where Edit_Curent_Pass.PassFieldList.IndexOf(t) == 0 || Edit_Curent_Pass.PassFieldList.IndexOf(t) == 1 || Edit_Curent_Pass.PassFieldList.IndexOf(t) == 2
    	select t).ToList());

    Я так и не понял, что хотели этим сказать...

    SantePaulinum, 30 Октября 2014

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