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

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    if (_viewModel.ShowColumnChooser && _viewModel.UseDefaultColumnChooser)
        //...
    else {
        if (!_viewModel.ShowColumnChooser)
            return;
        //...
    }

    Сэмпл платного фреймворка Syncfusion. Да, на этом коде они объясняют, как использовать их классы. А в поддержке отвечают сплошные косноязычные Раджеши Кутрапалли.

    gogishvilli001, 03 Апреля 2016

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

    +4

    1. 1
    phases.Where(phase => phase == null || phase.Trim().Length == 0)

    Нашёл в своём проекте, эта строка прошла code review. phase - это строка.

    gogishvilli001, 03 Апреля 2016

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

    0

    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
    WriteBuffer = enc.GetBytes("$ FETCH " + number + " BODY[HEADER]\r\n");
    netStream.Write(WriteBuffer, 0, WriteBuffer.Length);
    ListMessage = strReader.ReadLine();
    //...
    while ((ListMessage.IndexOf("$ OK ") == -1) && (ListMessage.IndexOf("$ BAD ") == -1))
    {
            //Типа там читаем всякие заголовки и прочие бла-бла
            if (ListMessage.IndexOf("filename=") > -1)
            {
                    temp = ListMessage.Replace("filename=", "");
                    temp = temp.Trim();
                    file_name = temp;
                    is_file = 1; temp = ""; is_att = 1;
            }
            //...
            ListMessage = strReader.ReadLine();
            continue;
    }
    //...
    WriteBuffer = enc.GetBytes("$ FETCH " + number + " BODY[TEXT]\r\n");
    netStream.Write(WriteBuffer, 0, WriteBuffer.Length);
    ListMessage = strReader.ReadLine();
    
    temp = "";
    end_file = 0;
    body = "";
    if (ListMessage.IndexOf("$ BAD ") == -1) ListMessage = strReader.ReadLine();
    if (ListMessage == "")
            is_body = 0;
    else
            is_body = 1;
    while ((ListMessage.IndexOf("$ OK ") == -1) && (ListMessage.IndexOf("$ BAD ") == -1))
    {
            if (is_body == 1)
            {
                    if (ListMessage == "")
                            is_body = 0;
                    else
                            body = body + ListMessage;
            }
            if ((is_att == 1) && (end_file == 0))
            {
                    if (is_file == 1)
                    {
                            if (ListMessage.IndexOf("--") > -1)
                                    end_file = 1;
                            else
                                    temp = temp + ListMessage;
                    }
                    if (ListMessage == "")
                    {
                            is_file = 1;
                    }
            }
            if (ListMessage.IndexOf("Content-Disposition: attachment;") > -1)
            {
                    is_att = 1;
            }
            //...
            ListMessage = strReader.ReadLine();
            continue;
    }
    if (is_att==0)
    {
            //А тут ничего интересного, просто декодирование из Base64 и сохранение в файл
    }

    Следите за булями (точнее, их суррогатами).

    ЗЫ: да, я уже выкладывал кусок из того же модуля, и там уже были некоторые куски, которые попали и сюда тоже.

    tucvbif, 02 Апреля 2016

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

    0

    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
    public override void OnPropertyChanged([CallerMemberName]string propertyName = null)
    {
        base.OnPropertyChanged(propertyName);
        if (String.Equals(propertyName, "[USERANKTARIFF]", StringComparison.CurrentCultureIgnoreCase))
        {
            if (((bool)this["USERANKTARIFF"]) == true)
            {
                this["SALARYLEVEL"] = null;
            }
            else
            {
                this["RANKTARIFF"] = null;
            }
        }
    }

    Продолжение хардкора. Мы любим ебаться с обжектами и кастами!

    kerman, 01 Апреля 2016

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

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    public void Initiaize(long buffersCount, int bufferSize)
    {
        if (bufferSize > Int32.MaxValue)
        {
            throw new ArgumentOutOfRangeException("bufferSize", bufferSize,
                                                  "Buffers size can't be grater than Int32 max value");
        }
        _bufferSize = bufferSize;
    }

    Irdis, 01 Апреля 2016

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

    +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
    public int Add(T item)
    {
        var p = m_parent as DataTreeRecord;
        var i = item as DataTreeRecord;
        if (m_newData == null || m_newData.Length == 0) m_newData = new T[8];
        if (m_newData.Length <= m_newCount) Array.Resize(ref m_newData, m_newData.Length * 2);
    
        if (p != null && i != null)
        {
            i.Parent = p;
        }
        m_newData[m_newCount++] = item;
        OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, new T[1] { item }));
        return this.Count - 1;
    }

    Мы любим ебаться с array. List? Зачем, он медленный! Мы напишем свой ORM с аррэями и PHP внутри няшного сишарпика.

    Приходилось работать с этим проектом. Это просто кладезь говнокода, и это ещё не самое ужасное место.

    kerman, 31 Марта 2016

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

    +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
    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
    public interface ICachedObject<TCachedValue>
        {
            TCachedValue Value { get; set; } 
        } 
    
    public interface ICacheProvider<TCachedObject, TCachedValue>
            where TCachedObject : ICachedObject<TCachedValue>
        {
            TCachedObject Get(string key);
    
            void Set(string key, TCachedObject value);
    
            void Remove(string key);
    
            IEnumerable<TCachedObject> GetAll();
        }
    
    public class CachedEntityObject : ICachedObject<IEntity>
        {
            public EntityState State { get; set; }
    
            public IEntity Value { get; set; }
        }
    
        public abstract class CacheProvider<TCache, TCachedObject, TCachedValue> :
            ICacheProvider<TCachedObject, TCachedValue> 
            where TCache : IDictionary<string, TCachedObject>
            where TCachedObject : ICachedObject<TCachedValue>
        {
            protected TCache Cache;
    
            protected abstract void InitializationCache();
    
            public abstract TCachedObject Get(string key);
    
            public abstract void Set(string key, TCachedObject value);
    
            public abstract void Remove(string key);
    
            public abstract IEnumerable<TCachedObject> GetAll();
        }
    
     public class CacheEntity : CacheProvider<Dictionary<string, CachedEntityObject>, CachedEntityObject, IEntity>
        {
            public CacheEntity()
            {
                InitCache();
            }
    
            protected sealed override void InitCache()
            {
                Cache = new Dictionary<string, CachedEntityObject>();
            }
    
            public override CachedEntityObject Get(string key)
            {
                if (Cache[key] == null)
                    throw new NullReferenceException($"{nameof(key)} not found from cache list");
    
                return Cache[key];
            }
    
            public override void Set(string key, CachedEntityObject value)
            {
                Remove(key);
    
                Cache[key] = value;
            }
    
            public override void Remove(string key)
            {
                if (Cache.ContainsKey(key))
                    Cache.Remove(key);
            }
    
            public override IEnumerable<CachedEntityObject> GetAll()
            {
                return Cache.Values;
            }
        }

    Кэш сущностей

    Serega9I, 31 Марта 2016

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

    +1

    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
    private int GetSroOper(MiscTransactionParams param)
    		{
    			if (param.ExpenseItem != null)
    			{
    				switch (param.ContractType)
    				{
    					case Entities.AT.ContractType.Undefined:
    					case Entities.AT.ContractType.TimeAndMaterials:
    					case Entities.AT.ContractType.Retainer:
    						switch ((int)param.ExpenseItem.ExpenseCategory)
    						{
    							case 2:
    							case 3:
    							case 29684252:
    							case 29684285:
    							case 29684805:
    								return param.BillingItem.IsNonBillable() ? Helper.SLServiceOrderOperation600 : Helper.SLServiceOrderOperation900;
    							default:
    								throw new InvalidOperationException("Unsupported Expense Category value");
    						}
    					case Entities.AT.ContractType.RecurringService:
    						switch ((int)param.ExpenseItem.ExpenseCategory)
    						{
    							case 2:
    							case 3:
    							case 29684252:
    							case 29684285:
    							case 29684805:
    								return param.BillingItem.IsNonBillable() ? Helper.SLServiceOrderOperation550 : Helper.SLServiceOrderOperation950;
    							default:
    								throw new InvalidOperationException("Unsupported Expense Category value");
    						}
    					case Entities.AT.ContractType.FixedPrice:
    						switch ((int)param.ExpenseItem.ExpenseCategory)
    						{
    							case 2:
    							case 3:
    							case 29684252:
    							case 29684285:
    							case 29684805:
    								return param.BillingItem.IsNonBillable() ? Helper.SLServiceOrderOperation500 : Helper.SLServiceOrderOperation950;
    							default:
    								throw new InvalidOperationException("Unsupported Expense Category value");
    						}
    					case Entities.AT.ContractType.Incident:
    						switch ((int)param.ExpenseItem.ExpenseCategory)
    						{
    							case 2:
    							case 3:
    							case 29684252:
    							case 29684285:
    							case 29684805:
    								return param.BillingItem.IsNonBillable() ? Helper.SLServiceOrderOperation600 : Helper.SLServiceOrderOperation950;
    							default:
    								throw new InvalidOperationException("Unsupported Expense Category value");
    						}
    					default:
    						throw new InvalidOperationException("Unsupported ContractType value");
    				}
    			}
    			else
    			{
    				switch (param.ContractType)
    				{
    					case Entities.AT.ContractType.Undefined:
    					case Entities.AT.ContractType.TimeAndMaterials:
    					case Entities.AT.ContractType.Retainer:
    						return param.BillingItem.IsNonBillable() ? Helper.SLServiceOrderOperation600 : Helper.SLServiceOrderOperation900;
    					case Entities.AT.ContractType.RecurringService:
    						return param.BillingItem.IsNonBillable() ? Helper.SLServiceOrderOperation550 : Helper.SLServiceOrderOperation950;
    					case Entities.AT.ContractType.FixedPrice:
    					case Entities.AT.ContractType.Incident:
    						int sroOper = (int)param.OrderOperation.EntityRow()[Constants.ServiceOrderOperation.Field.SroOper];
    						switch (sroOper)
    						{
    							case 500:
    							case 600:
    							case 800:
    							case 850:
    							case 950:
    								return sroOper;
    							default:
    								throw new InvalidOperationException("Unsupported Operation value");
    						}
    					default:
    						throw new InvalidOperationException("Unsupported ContractType value");
    				}
    			}
    		}

    Это наш сеньор написал

    kagetoki, 30 Марта 2016

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

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    public static bool AddStringIfNoExist(this List<string> strlist, string str)
    {
        if (str == "") return true;
        foreach (string s in strlist) if (s == str) return true;
        strlist.Add(str);
        return false;
    }

    Hashset? А что это такое?

    kerman, 29 Марта 2016

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

    +5

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    public enum Status : byte
    {
            Disabled = 0,
            Enabled
    }

    Мопед не мой, прислала боевая подруга из Канады, реальный проект за недетские деньги.
    Лаконичности була не хватило, лучше свой енум сделать, чем писать bool IsEnabled.
    KISS.

    kerman, 28 Марта 2016

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