1. Лучший говнокод

    В номинации:
    За время:
  2. Куча / Говнокод #16441

    +129

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    .some-amazing-class{
    
        // A Lot Of CSS
    
        > div.pull-right {
                float: left !important;
        }
    
        // A Lot Of CSS
    
    }

    Не так давно заметил на проекте у себя что-то подобное)))
    Как по мне так это именно Twitter Bootstrap Best Practices =)

    true2trance, 29 Июля 2014

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

    +129

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    if (enabled)
                    {
                        tabPanel.Tabs[FilesTabKey].Enabled = filesAndDocumentsForm.HaveReadPermission(EstateId);
                    }
                    else
                    {
                        tabPanel.Tabs[FilesTabKey].Enabled = false;
                    }

    zxxc, 26 Июля 2014

    Комментарии (69)
  4. JavaScript / Говнокод #16404

    +129

    1. 1
    if (i.toString().indexOf('.') == -1) { ... }

    Ещё один способ проверить, целое ли число.

    someone, 22 Июля 2014

    Комментарии (94)
  5. Куча / Говнокод #16346

    +129

    1. 1
    2. 2
    3. 3
    4. 4
    Я не считаю, что писать сайты на С++ - это бред. По-моему бред - это использовать динамически типизированный скрипт, типа PHP, у которого даже нормального ООП нет.
    Я писал на PHP и знаю, как это не удобно. Я считаю, если создать нормальную удобную обертку, то на С++ писать гораздо удобнее. 
    Самый главный минус С++ в том, что свой сайт я могу держать только на своем собственном сервере, и не могу его залить на какой-нибудь бесплатный хостин,
    как в случае с PHP.

    Прафессианальные сайтостроители с гейдева просвещают.

    gost, 15 Июля 2014

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

    +129

    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
    void PrintAllChars()
            {
                for (int i = 0; i < 255; i++)
                {
                    if (i == 10 || i == 20 || i == 30 || i == 40...i == 250)
                    {
                        
                    }
                    else
                    {
                        Console.WriteLine((char)i);
                    }
                }
            }

    Увидел у однокурсницы. Не могла объяснить зачем нужно пропускать, каждый десятый символ. Но даже если у нее было предлог, не самый лучший код это делать.

    garmush, 10 Июля 2014

    Комментарии (124)
  7. Куча / Говнокод #16050

    +129

    1. 1
    mixin(iota(3).map!(i => format("v[%1$d]+=rhs.v[%1$d];", i)).join());

    LispGovno, 23 Мая 2014

    Комментарии (13)
  8. Си / Говнокод #15967

    +129

    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
    #include <stdio.h>
    #include <stdint.h>
    
    #define ARR_L 11
    #define INS_P (arr[0])
    #define MOD_L(a) ((a) % ARR_L)
    #define INS_P_M (MOD_L(INS_P))
    #define ARR_ACS(a) (arr[MOD_L(a)]) //access to arr
    
    
    void foo (uint8_t *arr)
    {
      ARR_ACS(3) = INS_P * ARR_ACS(INS_P);
      ARR_ACS( MOD_L( INS_P_M + 1 ) ) = ((INS_P * INS_P) * 2);
      if (INS_P != 0) {ARR_ACS(INS_P_M)++;};
      INS_P = INS_P_M + 1;
    
      // tut voobche lubaya fignya, kotoraya chtoby izmenyala
      // figny v massive v zavisimosti ot sostoyania massiva
    }
    
    int main(void) {
      uint8_t arr[ARR_L] = {0,2,6,3,2,62,7,113,0,26,13};
      for (size_t a = 0; a < 10000; a++)
      {
        foo(arr);
        printf 
        (
          "%.3u %.3u %.3u %.3u %.3u "
          "%.3u %.3u %.3u %.3u %.3u %.3u\n",
          INS_P,arr[1],arr[2],arr[3],arr[4],
          arr[5],arr[6],arr[7],arr[8],arr[9],arr[10]);
      }
      return 0;
    }

    Машина Тьюринга с лентой конечной длины - конечный автомат. Состояние обязательно зациклится, какие бы правила преобразования над конечным алфавитом мы не вводили и каким бы ни было начальное состояние ленты.

    В сишке есть возможности вменяемо сделать вывод чисел из массива подряд для N-ного количества аргументов?
    Цикл не предлагать

    j123123, 12 Мая 2014

    Комментарии (52)
  9. Куча / Говнокод #15846

    +129

    1. 1
    http://archive.today/9LWN

    From: Linus Torvalds
    I think goto's are fine, and they are often more readable than large
    amounts of indentation.

    laMer007, 25 Апреля 2014

    Комментарии (111)
  10. Куча / Говнокод #15733

    +129

    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
    <script>
    // Browser Window Size and Position
    // copyright Stephen Chapman, 3rd Jan 2005, 8th Dec 2005
    // you may copy these functions but please keep the copyright notice as well
    function pageWidth()
    { return window.innerWidth != null ? window.innerWidth : document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null; }
    function pageHeight()
    { return window.innerHeight != null ? window.innerHeight : document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body != null ? document.body.clientHeight : null; }
    function posLeft()
    { return typeof window.pageXOffset != 'undefined' ? window.pageXOffset : document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ? document.body.scrollLeft : 0; }
    function posTop()
    { return typeof window.pageYOffset != 'undefined' ? window.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ? document.body.scrollTop : 0; }
    function posRight()
    { return posLeft() + pageWidth(); }
    function posBottom()
    { return posTop() + pageHeight(); }
    
    function SetWindowSize(s, h, w) {
        var wid = pageWidth();
        var hei = pageHeight();
        var n_wid = Math.round(wid * w);
        var n_hei = Math.round(hei * h);
        s.SetWidth(n_wid);
        s.SetHeight(n_hei);
    }
    function SetWindowW(s, w) {
        var wid = pageWidth();
        var n_wid = Math.round(wid * w);
        s.SetWidth(n_wid);
    }
    </script>
    <html>
    ...
                <td>
                    <dx:ASPxButton ID="AddCopyTemplate" runat="server" Text="Создать копию" 
                        AutoPostBack="False" 
                        CssFilePath="~/App_Themes/Office2010Black/{0}/styles.css" 
                        CssPostfix="Office2010Black" 
                        SpriteCssFilePath="~/App_Themes/Office2010Black/{0}/sprite.css" 
                        Wrap="True" >
                        <ClientSideEvents Click="function(s, e) {
    	AddCopyTemplate();
    }" Init="function(s, e) {
    	Get_Sizes_wid(s,1075);
    }" />
                    </dx:ASPxButton>
                </td>
                <td>
                    <dx:ASPxButton ID="AddTemplate" runat="server" Text="Создать" 
                        AutoPostBack="False" 
                        CssFilePath="~/App_Themes/Office2010Black/{0}/styles.css" 
                        CssPostfix="Office2010Black" 
                        SpriteCssFilePath="~/App_Themes/Office2010Black/{0}/sprite.css">
                        <ClientSideEvents Click="function(s, e) {
    	AddTemplateClick();
    }" Init="function(s, e) {
    	Get_Sizes_wid(s,1075);
    }" />
                    </dx:ASPxButton>
                </td>
    ...
    </html>

    я даже не знаю, в какой раздел это постить, но пусть будет тут.
    товарищ, пользовался горячелюбимыми контролами от DevExpress, которые работают херпойми как, но сейчас не об этом.
    в секции ClientSideEvents есть скрипты, которые выполняются на клиенте при старте, так вот он и поставил туда вызов функции, которая выставляет размеры для элементов.
    это одностраничное приложение на 1100 строк только одной размеки, где используется огромное количество различных элементов, панели, гриды, гнопки, модальные окна, и много всего прочего... и ни у одного из них не заданы вообще никакие размеры, все работает на этих JS функциях.
    эти волшебные цифры, которые передаются в функцию рассчитаны на его монитор, и как только они отрываются на другом мониторе с другим разрешением, то эти две кнопки занимают примерно 80% экрана.
    а самое главное, что модальные окна занимают примерно 80% высоты и ширины экрана, и сначала они рисуются по центру экрана, а потом увеличиваются функцией, из-за чего они уезжают за границы экрана

    Lokich, 11 Апреля 2014

    Комментарии (6)
  11. Си / Говнокод #15588

    +129

    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
    int minus(int ch)
    {
    if (ch < 0)
    {
    char buf[255];
    char *chs = itoa(ch);
    char *chsn = (char*)calloc(1, strlen(chs)+1];
    memset(chsn, 0, strlen(chs)+1);
    chsn[0] = '-';
    for (int i = 1, int j = 0; j < strlen(chs); i++, j++)
    {
    chsn[i] = chs[j];
    }
    int ret = atoi(chsn);
    return ret;
    }
    else
    {
    char buf[255];
    char *chs = itoa(ch);
    char *chsn = (char*)calloc(1, strlen(chs)+1];
    memset(chsn, 0, strlen(chs)+1);
    for (int i = 1, int j = 0; i < strlen(chs); i++, j++)
    {
    chsn[j] = chs[i];
    }
    int ret = atoi(chsn);
    return ret;
    }
    }

    gost, 27 Марта 2014

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