1. 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)
  2. 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)
  3. 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)
  4. 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)
  5. 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)
  6. 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)
  7. C# / Говнокод #19705

    −2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    public class FormulaParser : ParserBase {
            private XmlDocument ConvertToXml(String formula) {
                base.ProcessString(formula);
                if (!base.SkipString("="))
                    throw new Exception("Formula must start with '='!");
    ...
    и прочие вызовы методов базового класса без аргументов.

    Этакий state-machine: formula просто сохраняется в базовом классе в приватное поле. Написано сишниками.
    Они действительно думают, что ООП придумали для такого?

    BobKexit, 28 Марта 2016

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

    +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
    [DllImport("quickusb.dll", CharSet = CharSet.Ansi)]
    static extern int QuickUsbWriteData(IntPtr Handle, byte[] outData, int length);
    
    // ...
    
     public bool Write(byte[] data)
        {
        // ...
            int result = QuickUsbWriteData(handle, data, data.Length);
    
            if (result != 0)
                return true;
            else if (result == 0)
            {
                LastError =  "QUSB returned 0";
                return false;
            }
            else
            {
                LastError = "Unknown error inside WriteData";
                return false;
            }
        // ...
      }

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

    yamamoto, 25 Марта 2016

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

    +8

    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 static bool IsObjectIs<T>(object o)
    {
        if (o == null)
            return false;
    
        try
        {
            object b = (T)o;
            return true;
        }
        catch
        {
            return false;
        }
    }

    Такая вот реализация c# оператора 'is'

    lonkimonki, 24 Марта 2016

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

    +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
    public class ResultBase {
            private ColumnCollections _columns;
            private ArrayList _rows;
    ...
    }
    ...
    public class ColumnCollections : System.Collections.Specialized.NameObjectCollectionBase {}
    ...
            public int Compare(object x, object y) {
                if (x != null && y != null) {
                    object[] objX = x as object[];
                    object[] objY = y as object[];
    
                    if (objX != null && objY != null && objX.Length > 0 && objX.Length == objY.Length) {
                        switch (_ColumnType.FullName) {
                            case "System.Int16":
                                if (_Direction == DirectionType.ASC) {
                                    return ((short)objX[_ColumnIndex]).CompareTo((short)objY[_ColumnIndex]);
                                } else {
                                    return ((short)objY[_ColumnIndex]).CompareTo((short)objX[_ColumnIndex]);
                                }
                            case "System.Int32":
                                if (_Direction == DirectionType.ASC) {
                                    return ((int)objX[_ColumnIndex]).CompareTo((int)objY[_ColumnIndex]);
                                } else {
                                    return ((int)objY[_ColumnIndex]).CompareTo((int)objX[_ColumnIndex]);
                                }
                            case "System.Int64":
                                if (_Direction == DirectionType.ASC) {
                                    return ((long)objX[_ColumnIndex]).CompareTo((long)objY[_ColumnIndex]);
                                } else {
                                    return ((long)objY[_ColumnIndex]).CompareTo((long)objX[_ColumnIndex]);
                                }
                            case "System.Double":
                                if (_Direction == DirectionType.ASC) {
                                    return ((double)objX[_ColumnIndex]).CompareTo((double)objY[_ColumnIndex]);
                                } else {
                                    return ((double)objY[_ColumnIndex]).CompareTo((double)objX[_ColumnIndex]);
                                }
                            case "System.Decimal":
                                if (_Direction == DirectionType.ASC) {
                                    return ((decimal)objX[_ColumnIndex]).CompareTo((decimal)objY[_ColumnIndex]);
                                } else {
                                    return ((decimal)objY[_ColumnIndex]).CompareTo((decimal)objX[_ColumnIndex]);
                                }
                            case "System.Single":
                                if (_Direction == DirectionType.ASC) {
                                    return ((float)objX[_ColumnIndex]).CompareTo((float)objY[_ColumnIndex]);
                                } else {
                                    return ((float)objY[_ColumnIndex]).CompareTo((float)objX[_ColumnIndex]);
                                }
                            case "System.String":
                                String sX = (!Convert.IsDBNull(objX[_ColumnIndex])) ? (String)objX[_ColumnIndex] : String.Empty;
                                if (String.IsNullOrEmpty(sX)) {
                                    sX = "";
                                }
    
                                String sY = (!Convert.IsDBNull(objY[_ColumnIndex])) ? (String)objY[_ColumnIndex] : String.Empty;
                                if (String.IsNullOrEmpty(sY)) {
                                    sY = "";
                                }
    
                                if (_Direction == DirectionType.ASC) {
                                    return sX.CompareTo(sY);
                                } else {
                                    return sY.CompareTo(sX);
                                }
                            case "System.DateTime":
                                if (_Direction == DirectionType.ASC) {
                                    return ((DateTime)objX[_ColumnIndex]).CompareTo((DateTime)objY[_ColumnIndex]);
                                } else {
                                    return ((DateTime)objY[_ColumnIndex]).CompareTo((DateTime)objX[_ColumnIndex]);
                                }
                            case "System.Boolean":
                                if (_Direction == DirectionType.ASC) {
                                    return ((Boolean)objX[_ColumnIndex]).CompareTo((Boolean)objY[_ColumnIndex]);
                                } else {
                                    return ((Boolean)objY[_ColumnIndex]).CompareTo((Boolean)objX[_ColumnIndex]);
                                }
                        }
                    }
                }
    
    
                return 0;
            }

    достался мне в наследство код, который я года два поддерживал. никогда не вдавался в код той тулзы, которая из базы результаты возвращяла, пока не пришлось описать проект комментариями, чтобы отдать его клиенту.
    компарер просто божественен...
    я конечно точно не знаю, кто это писал, но за то знаю, кому пренадлежил авторство конкретной версии, но за то знаю, кто писал первую... и этот человек мне еще говорил, что мой экстеншен в 50 строк, который через рифлексию миллион строк из IDataReader за секунду в коллекцию объектов возвращял, уверял меня, что это медленное и корявое говно. нет, это медленное и корявое говно!

    господи, за что?

    Lokich, 21 Марта 2016

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