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

    +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
    using System;
     
    namespace Test
    {
        public class HttpException : Exception
        {
            public HttpException(int status)
            {
                StatusCode = status;
            }
     
            public int StatusCode { get; set; }
        }
     
        class Program
        {
            static void TestCatch(int status)
            {
                try
                {
                    throw new HttpException(status);
                }
                catch (HttpException ex) when (ex.StatusCode == 404)
                {
                    Console.WriteLine("Not Found!");
                }
                catch (HttpException ex) when (ex.StatusCode >= 500 && ex.StatusCode < 600)
                {
                    Console.WriteLine("Server Error");
                }
                catch (HttpException ex)
                {
                    Console.WriteLine("HTTP Error {0}", ex.StatusCode);
                } 
            }
            static void Main(string[] args)
            {
                TestCatch(404);
                TestCatch(501);
                TestCatch(101);
            }
        }
    }

    https://ideone.com/zXstg3
    Именно поэтому я за «C#».

    gost, 27 Марта 2020

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    try
           {
                await storageClient.DownloadObjectAsync(Bucket, fileName, stream).ConfigureAwait(false);
           }
        catch(Exception ex)
           {
                throw new FileStorageException($"File '{fileName}' not found in a bucket '{Bucket}'", ex) { StatusCode = StatusCodes.Status404NotFound };
           }

    Сеньйор дот нет девелопер

    horil97821, 26 Марта 2020

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

    +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
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    using System;
    using System.Runtime.Serialization;
    
    namespace MyCoolProject {
        internal sealed class CatastrophicException: Exception
        {
            private static bool dead = false;
            public static bool Dead { get { return dead; } }
            void RecurseDeath() {
                try {
                    RecurseDeath();
                } finally {
                    RecurseDeath();
                }
            }
            private void DIE() {
                dead = true;
                try {
                    Environment.FailFast("Catastrophic Exception!!!");
                } finally {
                    try {
                        RecurseDeath();
                    } finally {
                        throw this;
                    }
                }
            }
            public CatastrophicException() {
                DIE();
            }
            public sealed override string ToString() {
                DIE();
                throw this;
            }
            public sealed override System.Collections.IDictionary Data {
                get {
                    DIE();
                    throw this;
                }
            }
            public sealed override bool Equals(object obj) {
                DIE();
                throw this;
            }
            public sealed override Exception GetBaseException() {
                DIE();
                throw this;
            }
            public sealed override int GetHashCode() {
                DIE();
                throw this;
            }
            public sealed override string HelpLink {
                get {
                    DIE();
                    throw this;
                } set {
                    DIE();
                }
            }
            public sealed override string Message {
                get {
                    DIE();
                    throw this;
                }
            }
            public sealed override void GetObjectData(SerializationInfo info, StreamingContext context) {
                DIE();
            }
            public sealed override string Source {
                get {
                    DIE();
                    throw this;
                }
                set {
                    DIE();
                }
            }
            public sealed override string StackTrace {
                get {
                    DIE();
                    throw this;
                }
            }
            ~CatastrophicException() {
                try {
                    new CatastrophicException().DIE();
                } finally {
                    try {
                        new CatastrophicException().DIE();
                    } finally {
                        new CatastrophicException().DIE();
                    }
                }
            }
        }
    }

    Upliner, 11 Марта 2020

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

    +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
    public class WindowEx : Window //...
    {
            //hwnd окна
            public IntPtr Handle { get; set; }
    
            private const int GWL_EXSTYLE = (-20);
            private const uint WS_EX_TOPMOST = 0x00000008;
    
            public void SetTopmost()
            {
                SetTopmost(Handle);
            }
    
            public static void SetTopmost(IntPtr hWnd)
            {
                SetWindowLongPtr(hWnd, GWL_EXSTYLE, (IntPtr)((ulong)GetWindowLongPtr(hWnd, GWL_EXSTYLE) | WS_EX_TOPMOST));
            }
    
            public void UnSetTopmost()
            {
                UnSetTopmost(Handle);
            }
    
            public static void UnSetTopmost(IntPtr hWnd)
            {
                SetWindowLongPtr(hWnd, GWL_EXSTYLE, (IntPtr)((ulong)GetWindowLongPtr(hWnd, GWL_EXSTYLE) & ~WS_EX_TOPMOST));
            }
    
            private bool _topmost;
            public new bool Topmost
            {
                set
                {
                    if (value)
                    {
                        SetTopmost();
                    }
                    else
                    {
                        UnSetTopmost();
                    }
                    _topmost = value;
                }
                get { return _topmost; }
            }
    }

    Тру окно. С тру топмостом. Бесполезно чуть менее, чем полностью:
    1) Новый топмост не нужен. Оригинальное свойство через SetWindowPos сделает тоже самое (SetWindowPos может менять дополнительный стиль WS_EX_TOPMOST)
    2) Handle (hwnd окна) c публичным set. Круто, чё. Следовало бы сделать public IntPtr Handle { get; private set; }

    Так я писал код где-то лет 6 назад.

    Janycz, 08 Марта 2020

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

    +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
    private void MainDataGridCellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
    {
                if (e.Column == MainDataGrid.Columns[1])
                    return;
    
                if (CheckComplianceWithIndentation)
                    if ((NumberOfLeadingSpaces(Rows[e.Row.GetIndex()].OriginalText) != NumberOfLeadingSpaces(Rows[e.Row.GetIndex()].Translation)) && !Rows[e.Row.GetIndex()].Tags.Contains("I"))
                        Rows[e.Row.GetIndex()].Tags += "I";
                    else if (NumberOfLeadingSpaces(Rows[e.Row.GetIndex()].OriginalText) == NumberOfLeadingSpaces(Rows[e.Row.GetIndex()].Translation))
                        Rows[e.Row.GetIndex()].Tags = Rows[e.Row.GetIndex()].Tags.Replace("I", "");
    
                if ((Rows[e.Row.GetIndex()].Translation.Trim() == "") && !Rows[e.Row.GetIndex()].Tags.Contains("N"))
                    Rows[e.Row.GetIndex()].Tags += "N";
                else if (Rows[e.Row.GetIndex()].Translation.Trim() != "")
                    Rows[e.Row.GetIndex()].Tags = Rows[e.Row.GetIndex()].Tags.Replace("N", "");
    
                //...
    }
    
    public void TagsInit()
    {
                if (CheckComplianceWithIndentation)
                    foreach (var hRow in Rows.Where(hRow => NumberOfLeadingSpaces(hRow.OriginalText) != NumberOfLeadingSpaces(hRow.Translation)))
                    {
                        hRow.Tags += "I";
                    }
    
                foreach (var row in Rows.Where(hRow => hRow.Translation == ""))
                {
                    row.Tags += "N";
                }
    }

    Дано: C#, WPF, DataGrid, таблица.
    Надо сделать: таблица имеет поля, в том числе и поле Tags, которое определяется полями Translation и OriginalText, а также настройками пользователя (CheckComplianceWithIndentation), нет бы его вынести в класс строки как геттер:
    public string Tags => f(Translation, Original);

    вместо:
    private string _tags;
    public string Tags
    {
    get => _tags;
    set
    {
    _tags = value;
    RaisePropertyChanged("Tags");
    }
    }

    Так нет же, будем отлавливать изменения ячеек таблицы (MainDataGridCellEditEnding) и пересчитывать Tags. MainDataGrid.Columns[1] - это колонка с ними, прибито гвоздями в xaml: CanUserReorderColumns="False"

    Эх, а еще и Trim вместо String.IsNullOrWhiteSpace.

    А еще немного венгерской говнонотации (hRow).

    Так я писал где-то лет 7 назад. Да, тогда стрелок не было, но они приведены в описании тупо для сокращения строк кода.

    Janycz, 08 Марта 2020

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

    +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
    // Задача: Рисовать в консоли прогресс бар, на сколько дней текущий год завершился
    
    static void ProgressBarOfElapsedDays(DateTime dateTime, bool isRefreshebleat = false)   // рефрешеБЛЕАТ! :))
    {
        int daysOfYear = DateTime.IsLeapYear(dateTime.Year) ? 366 : 365;
        int dayInProcents = daysOfYear * 100 / 100;     // WAT?
        int currentDay = dateTime.DayOfYear * 100;
        int daysOfYearNotElapsed = daysOfYear * 100 - currentDay;  // Сложный матан
        int procent = 100 - (daysOfYear * 100 - currentDay) / dayInProcents; 
        int buffer = 0;
    
        if (isRefreshebleat)
        {
            if (Console.CursorTop >= 1 || Console.CursorLeft >= 1)
            {
                Console.SetCursorPosition(Console.CursorLeft - Console.CursorLeft, Console.CursorTop - Console.CursorTop); // когда Console.SetCursorPosition(0, 0) недостаточно
            }
        }
    
        // остальной код
    }

    isRefreshebleat и всё остальное :))

    adoconnection, 06 Марта 2020

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    public static void ActivateChangeHotKeyButtonModeButtonClick(object sender, EventArgs e)
    {
           TaskBarHidderForm.ChangeHotKeyPanel.Visible = true;
           TaskBarHidderForm.KeyButtons[0].Text = TaskBarHidder.HotKeyCodes[0].ToString();
           TaskBarHidderForm.KeyButtons[1].Text = TaskBarHidder.HotKeyCodes[1].ToString();
    }

    кодить под пивко заебись :)

    pashaluk31, 21 Января 2020

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

    −4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    public static unsafe int Strlen(byte* data)
    {
                int i = 0;
                while (data[i] != 0)
                {
                    ++i;
                }
                return i;
    }

    Работа с C строками

    Koshak90, 20 Декабря 2019

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

    +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
    public static XmlNode FindNodeRecursive(XmlNode document, string nodeName)
    {
        if (document.Name == nodeName)
            return document;
    
        foreach (XmlNode node in document.ChildNodes)
        {
            if (node.Name == nodeName)
                return node;
    
            XmlNode resNode = FindNodeRecursive(node, nodeName);
            if (resNode != null && resNode.Name == nodeName)
                return resNode;
        }
    
        return (XmlNode)null;
    }
    <...>
     XmlDocument document = new XmlDocument();
     document.LoadXml(request);
    
    var PurchaseIdNode = XmlProcessing.FindNodeRecursive(document, "PurchaseId");

    Разработчик с 15-летним стажем
    XPath'у не доверяет

    Barch, 12 Декабря 2019

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

    +2

    1. 1
    2. 2
    3. 3
    https://tjournal.ru/analysis/128216-moshenniki-3-0-kak-ne-popastsya-na-udochku-novogo-pokoleniya-prestupnikov-v-sfere-it
    
    https://leonardo.osnova.io/0234cd39-a2ef-c6d8-d8df-87df562f9997/-/scale_crop/600x398/center/

    booratihno, 30 Ноября 2019

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