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

    +124

    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
    switch ((int)row["State"])
              {
                case 0:
                  /*** Get Contact Row for Company ***/
                  if (contactTbl != null)
                  {
                    contactRow = null;
                    DataRow[] contactRows = contactTbl.Select("Company_Id='" + row["Id"].ToString() + "'");
                    if (contactRows != null && contactRows.Length > 0)
                    {
                      contactRow = contactRows[0];
                      if ((bool)contactRow["fDontMailshot"] == false)
                      {
                        thisMailShot = true;
                      }
                      else
                      {
                        thisMailShot = false;
                      }
                    }
                  }
    
                  if ((bool)row["fManagementCompany"] == true)
                  {
                    if (row["Id"].ToString() == "00-20181" || row["Id"].ToString() == "00-60838")
                    {
                      myEntityID = Entity(2, row);
                      if (!SubContractor(myEntityID, row)) { return false; }
                    }
                    else
                    {
                      myEntityID = Entity(10, row);
                    }
                    if (myEntityID < 0) { return false; }
                    if (!Address(myEntityID, row)) { return false; }
                    if (!Contact(myEntityID, contactRow, SOURCETYPE_ENTITY)) { return false; }
                  }
                  else if ((bool)row["fSubcontractor"] == true || ((bool)row["fSupplier"] == true && (bool)row["fCustomer"] == false))
                  {
                    myEntityID = Entity(2, row);
                    if (myEntityID < 0) { return false; }
                    if (!Address(myEntityID, row)) { return false; }
                    if (!Contact(myEntityID, contactRow, SOURCETYPE_ENTITY)) { return false; }
                    if (!SubContractor(myEntityID, row)) { return false; }
                  }
                  else if ((bool)row["fHousingAssociation"] == true)
                  {
                    myEntityID = Entity(7, row);
                    if (myEntityID < 0) { return false; }
                    if (!Address(myEntityID, row)) { return false; }
                    if (!Contact(myEntityID, contactRow, SOURCETYPE_ENTITY)) { return false; }
                    if (!Customer(myEntityID, row, thisMailShot)) { return false; }
                  }
                  else if ((bool)row["f2ndOwnerTenant"] == true && (bool)row["fCustomer"] == false)
                  {
                    myEntityID = Entity(8, row);
                    if (myEntityID < 0) { return false; }
                    if (!Address(myEntityID, row)) { return false; }
                    if (!Contact(myEntityID, contactRow, SOURCETYPE_ENTITY)) { return false; }
                    if (!Customer(myEntityID, row, thisMailShot)) { return false; }
                  }
                  else if ((bool)row["fCustomer"] == true && (bool)row["f2ndOwnerTenant"] == false)
                  {
                    myEntityID = Entity(7, row);
                    if (myEntityID < 0) { return false; }
                    if (!Address(myEntityID, row)) { return false; }
                    if (!Contact(myEntityID, contactRow, SOURCETYPE_ENTITY)) { return false; }
                    if (!Customer(myEntityID, row, thisMailShot)) { return false; }
                  }
                  else if ((bool)row["fCustomer"] == true && (bool)row["f2ndOwnerTenant"] == true)
                  {
                    myEntityID = Entity(7, row);
                    if (myEntityID < 0) { return false; }
                    if (!Address(myEntityID, row)) { return false; }
                    if (!Contact(myEntityID, contactRow, SOURCETYPE_ENTITY)) { return false; }
                    if (!Customer(myEntityID, row, thisMailShot)) { return false; }
                  }
                  break;
                default:
                  break;
              }

    Отличный пример использования конструкций ветвления. Имеем switch, в нём один case, а в кейсе много-много иф-элсов. И что очень характерно для этого проекта с тремя классами по 9000 строк, никакого повторного использования кода. Реализация принципа "зачем писать меньше?".

    Progreso, 26 Мая 2010

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

    +120

    1. 1
    2. 2
    3. 3
    4. 4
    public static bool GetUpperBit(long number)
    {
       return number < 0;
    }

    Да это не ГК, но остроумный способ получить верхний бит числа.

    FMB, 25 Мая 2010

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

    +120

    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
    ///<summary>
    /// Перемещение страницы в/из корзины
    ///</summary>
    ///<param name="PageID">Идентификатор страницы</param>
    ///<param name="Direction">Определяет в корзину или из нее перемещать страницу</param>
    ///<param name="Page">Экземпляр страницы</param>
    ///<returns></returns>
    ///<exception cref="Exception"></exception>
    public static Exception PageToRecicle(int PageID, int Direction, Page Page)
    {
        SiteData data = new SiteData("MsSqlConnectionString");
        SiteXml xml = new SiteXml();
        Exception ee = new Exception();
    
        SitePage page = new SitePage(Page);
        if (page.StartPageID == PageID)
        {
            try
            {
                throw new Exception(xml.GetXmlResource("adminmenu.ascx", "RemoveStart"));
            }
            catch (Exception exc)
            {
                ee = exc;
            }
            return ee;
        }
        if (Direction == 0 || !SitePage.HasPageChilds(PageID, false))
        {
            data.ExecuteStoredProcedure("sPageToRecicle", ref ee, "@PageID", PageID, "@Direction", Direction,
                                        "@UserName", HttpContext.Current.User.Identity.Name);
        }
        else
        {
            try
            {
                throw new Exception(xml.GetXmlResource("adminmenu.ascx", "RemoveError"));
            }
            catch (Exception exc)
            {
                ee = exc;
            }
        }
        return ee;
    }

    Это фрагмент коммерческой CMS между прочим. Если бы автор родился в Спарте, его бы незамедлительно ё*нули об скалы.

    sombre-hombre, 25 Мая 2010

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

    +106

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    bool tos = true;
                   susid:
                       while (tos)
                        {
                              goto susid;
                    }

    Энто был я=(

    BlincAttack, 24 Мая 2010

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

    +136

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    enum Bool
    {
        True,
        False,
        FileNotFound
    };

    Как оказывается Boolean может быть не только long, но и FileNotFound.

    Нашел зде©ь http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx

    HyperGeek, 19 Мая 2010

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

    +113

    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
    private static void assertNoReflection()
    {
        foreach (StackFrame stackFrame in new StackTrace().GetFrames())
        {
            if (stackFrame.GetMethod().DeclaringType.Namespace == "System.Reflection")
            {
                throw new MethodAccessException();
            }
        }
    }
    
    internal static string GetKey()
    {
        assertNoReflection();
    
    // ...
    }

    Вот так вот приходится говнить, потому что в дотнете рефлексией можно спокойно вызывать internal- и private- методы.
    assertNoReflection(); проверяет, что вверх по стеку вызовов никто не балуется рефлексией.
    После assertNoReflection(); из нативной длл получаем обфусцированную (вручную, лол) строку, которая далее с помощью запутанных алгоритмов (некоторые параметры для "расшифровки" опять берутся из нативной длл) приводит её в вид пароля (для доступа к запароленному архиву).
    Софт не прямо уж суперсекретный, просто нужно скрыть ресурсы хотя бы для приличия. Пароль через подключение к серверу не катит.
    Ко всему этому оно собрано в одно exe моновским mkbundle'ом (рефлектор не может открыть!) и поверх upx'ом. В общем, большое количество кулхацкеров отсекается (должны знать ассемблер и MSIL).
    Чувствую, что говнорешение, но не могу придумать что-то более умное. Обфускаторы тоже не очень катят, ибо плохо дружат с моно.

    cfdev, 18 Мая 2010

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

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    public bool Inverse(bool value){
       if(value.ToString().Length == 4)
          return false;
       else return true;
    }

    было дело...

    tazakara, 17 Мая 2010

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

    +119

    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
    private static bool TryDeleteFile(string path)
            {
                try
                {
                    File.Delete(path);
                    return true;
                }
                catch (IOException e)
                {
                    return false;
                }
                catch (UnauthorizedAccessException e)
                {
                    return false;
                }
                catch (ArgumentException ae)
                {
                    return false;
                }
                catch (NotSupportedException e)
                {
                    return false;
                }
            }

    Простое удаление файла. Простая проверка в MSDN показывает, что перехватываются все возможные исключения

    gopher, 14 Мая 2010

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

    +109

    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
    private void timer1_Tick(object sender, EventArgs e)
    
            {
    
                Process[] myP = Process.GetProcessesByName("TASKMGR");
    
                foreach (Process p in myP)
    
                {
    
                    p.CloseMainWindow();
    
                }
    
            }

    Защита! Чтобы студенты не махлевали. Программа закрывается только вводом пароля. Таймер хуярит форму все время поверх всех окон и люто ненавидит все, что похоже на "диспетчер задач"...

    Anderson, 13 Мая 2010

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

    +118

    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
    #region копирование в буфер
            private void copia_Click(object sender, EventArgs e)
            {
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < listBox1.Items.Count; i++)
                {
                    sb.Append(listBox1.Items[i].ToString());//Добавляем строчку из листБокса
                    sb.Append((char)13);//Перенос строки
                    sb.Append((char)10);//Перевод каретки
                }
                Clipboard.SetText(sb.ToString());//Отправляем всё в КлипБорд
            }
            #endregion
    
            #region Сохранить в файл
    
            private void save_Click(object sender, EventArgs e)
            {
                saveFileDialog1.DefaultExt = ".txt";
                saveFileDialog1.OverwritePrompt = true;
                saveFileDialog1.Title = "Координаты";
                saveFileDialog1.Filter = "Text Files|*.txt";
    
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    StreamWriter sw = new StreamWriter(saveFileDialog1.FileName);
                    StringBuilder sb = new StringBuilder();
                    for (int i = 0; i < listBox1.Items.Count; i++)
                    {
                        sb.Append(listBox1.Items[i].ToString());//Добавляем строчку из листБокса
                        sb.Append((char)13);//Перенос строки
                        sb.Append((char)10);//Перевод каретки
                    }
                    sw.WriteLine(sb);
                    sw.Flush();
                    sw.Close();
                }
            }
            #endregion

    L5D, 12 Мая 2010

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