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

    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
    public static IEnumerable fGetPostIMAP(string port, int port2, string username, string password, string startCount, string path)
    {
        Stopwatch swatch = new Stopwatch();
        swatch.Start();
        int Delay = 10;
        System.IO.StreamWriter sw = null;
        System.Net.Sockets.TcpClient tcpc = null;
        int bytes = -1;
        int is_file = 0;
        int is_att = 0;
        byte[] buffer;
        StringBuilder sb = new StringBuilder();
    //...
        string UID = "";
        string From;
        try
        {
    //...
    
                        if (ListMessage.IndexOf("filename=") > -1)
                        {
                            temp = ListMessage.Replace("filename=", "");
                            temp = temp.Trim();
                            file_name = temp;
                            is_file = 1; temp = ""; is_att = 1;
                        }
    //...
                            if (is_file == 1)
                            {
                                if (ListMessage.IndexOf("--") > -1)
                                    end_file = 1;
                                else
                                    temp = temp + ListMessage;
    
                            }
                            if (ListMessage == "")
                            {
                                is_file = 1;
                            }
    //...
        }
        catch (Exception ex)
        {
            rows.Add(new object[] { "ERROR:" });
            rows.Add(new object[] { ex.Message });
        }
        finally
        {
            if (sw != null)
            {
                sw.Close();
                sw.Dispose();
            }
            if (tcpc != null)
            {
                tcpc.Close();
            }
        }
        return rows;
    }

    Делфи головного мозга просвечивает в каждой строчке. Даже использованием 0/1 вместо булева типа не скрыть дельфишной сути.

    tucvbif, 17 Марта 2016

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

    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
    private AnimatedPanel GetPanelForPage(int page)
    		{
    			switch(page)
    			{
    				case 1:
    					return apnInitial;
    				case 2:
    					if(ShowExtraInfoPage)
    					{
    						DidShowExtraInfo = true;
    						return apnCustomerInfo;
    					}
    					DidShowExtraInfo = false;
    					break;
    				case 3:
    					return apnDeploy;
    				case 4:
    					return apnMetrics;
    				case 5:
    					return apnSecurity;
    				case 6:
    					//if(Static.IsFeatureLicenced((int)Features.PowerManagement, UserMgmt.CustomerGuid))
    					//{
    					//	return apnPowerCosts;
    					//}
    					break;
    				case 7:
    					//if(Static.IsFeatureLicenced((int)Features.PowerManagement, UserMgmt.CustomerGuid))
    					//{
    					//	return apnBaseline;
    					//}
    					break;
    				case 8:
    					//if(Static.IsFeatureLicenced((int)Features.PowerManagement, UserMgmt.CustomerGuid))
    					//{
    					//	return apnPowerPolicy;
    					//}
    					break;
    				case 9:
    					return apnDiscoverTask;
    				case 10:
    					return apnWaitForRep;
    				case 11:
    					return apnClientEndpoints;
    				case 12:
    					return apnWaitForDiscovery;
    				case 13:
    					return apnFinished;
    				default:
    					break;
    			}
    			return null;
    		}

    Перемещаемся по страницам: 1->3->4->5->9

    Zetway, 15 Марта 2016

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

    +3

    1. 1
    2. 2
    var listModuleId = dbContext.MODULES.Where(n => n.IFDELETE == 0 && n.DEVICETYPE == 1).Select(m => m.IDMODULE).ToList();
    var ListMeasure = dbContext.MEASURE.Where(n => listModuleId.Contains(n.IDMODULES)).GroupBy(m => m.IDMODULES).ToList();

    Если в MODULES несколько сотен датчиков, то вторая строка разворачивается в sql-запрос на 22 килобайта, а если в MEASURE 13 тысяч записей, то этот запрос выполняется полторы минуты.
    Молчу уже о том, что listModuleId нигде, кроме второй строки, не используется.

    avialaynen, 15 Марта 2016

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

    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
    static void Main(string[] args)
    {
    	try
    	{
    		watcher.Path = TargetPath;
    		watcher.Created += Watcher_Created;
    		watcher.Renamed += Watcher_Created;
    		watcher.EnableRaisingEvents = true;
    		logger.Info("Сервис запущен.");
    		System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
    	}
    	catch(Exception ex)
    	{
    		logger.Error(ex, "Global error", null);
    		Main(null);
    	}
    }

    хуита, 15 Марта 2016

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

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    private static async Task<DataTable> GetWaitingBetsHandlingHistory(int customerID, int betID, DateTime date)
           {
               // copied from: CBets.GetWaitingBetsHandlingHistory
               string connectionString = AppConfig.MachineAppSettings("connectionString");
               SqlConnection conn = new SqlConnection(connectionString);
               ...

    Copy-paste-driven development confession

    pro687, 14 Марта 2016

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

    +7

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    private bool trap = false;
    public bool TrapExceptions
    {
    	get { return this.trap; }
    	set { this.trap = true; }
    }

    Выхода нет.

    yamamoto, 10 Марта 2016

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