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

    В номинации:
    За время:
  2. Си / Говнокод #14263

    +135

    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
    Структура для хранения данных:
    typedef struct rs_script_t {
        int status; // on/off
        int next_stage;
        int next_time;
    } rs_script_t;
    
    Макросы:
    
    #define SEQ(scr1,t)    \
        const int scr_zero = __COUNTER__;   \
        rs_script_t *scr = scr1; \
        if ( (scr->status) && (t > scr->next_time) ) {  \
            switch(scr->next_stage) {    \
        
    #define END_SEQ } };             
    
    
    #define SEQ_FIRST \
            case 0: \
                    scr->next_stage = scr_zero;
                    
    
    #define SEQ_DT(dt) \
                    scr->next_stage = __COUNTER__ + 1;   \
                    scr->next_time += dt;  \
                    break;  \
                case __COUNTER__:   \
                
    #define SEQ_DT_TAGGED(dt,tag) \
                    scr->next_stage = __COUNTER__ + 1; \
                    scr->next_time += dt;    \
                    break; \
                case __COUNTER__:    \
                case (100000+tag):   \
    
    #define SEQ_LAST_DEFAULT    \
                    scr->status = 0; \
                    break;  \
                    \
                default:    \
                    DEBUG10f(":: ERROR, unknown stage position: %d \n", scr->next_stage);    \
                    break;
    
    #define SEQ_GOTO(dt,tag) \
                    scr->next_stage = 100000+tag; \
                    scr->next_time += dt; \
                    break;
                    
    #define SEQ_GOTO_INSTANT(tag) \
                    scr->next_stage = 100000+tag; \
                    break;
    
    Пользоваться примерно так:
    void process() { // вызывать каждый кадр
    
        SEQ(&scrtest, rs_app.app_time)
                
            SEQ_FIRST
                printf("Ноль\n");
                
            SEQ_DT(1000)
                printf("Один\n");
                
            SEQ_DT(1000)
                printf("Два\n");
                
            SEQ_DT_TAGGED(1000, 555)
                printf("Три (метка №555) \n");
                
            SEQ_DT(1000)
                printf("Четыре\n");
                
            SEQ_DT(1000)
                printf("Пять\n");
                
            SEQ_DT(1000)
                printf("Шесть, повторяем с метки №555, если нажат Шифт\n");
                if (rs_keyboard_is_key_down(RS_KEY_SHIFT_L)) {
                    SEQ_GOTO(1000, 555);
                };
                printf("Завершаем. \n");
                
            SEQ_LAST_DEFAULT     
            
        END_SEQ;
    
    };

    Страдания по yield

    TarasB, 23 Декабря 2013

    Комментарии (5)
  3. PHP / Говнокод #14176

    +152

    1. 1
    public function getNearestRoadsOrderedByDistanceFromOverpassAPI ($point, $radius = 1000, $highway = FALSE, $raw = FALSE, $json = FALSE)

    за то со смыслом!

    nonamez, 04 Декабря 2013

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

    +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
    [Serializable]
     private class NameValue<N, V>
     {
          public N Name { get; set; }
          public V Value { get; set; }
          public NameValue() { }
          public NameValue(N name, V value)
          {
              Name = name;
              Value = value;
          }
     }
    
     private System.Collections.Generic.List<NameValue<string, string>> productList =
                new System.Collections.Generic.List<NameValue<string, string>>();

    не шутка

    taburetka, 02 Декабря 2013

    Комментарии (5)
  5. PHP / Говнокод #14143

    +166

    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
    function CompareDates($date1, $date2)
    {
    	$s_date1 = $this->CharToDateFunction($date1);
    	$s_date2 = $this->CharToDateFunction($date2);
    	$strSql = "
    		SELECT
    			if($s_date1 > $s_date2, 1,
    				if ($s_date1 < $s_date2, -1,
    					if ($s_date1 = $s_date2, 0, 'x')
    			)) as RES
    		";
    	$z = $this->Query($strSql, false, "FILE: ".__FILE__."<br> LINE: ".__LINE__);
    	$zr = $z->Fetch();
    	return $zr["RES"];
    }

    Bitrix. Функция прекрасно живет как минимум с 10 версии по сей день.

    Homess, 26 Ноября 2013

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

    +12

    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 <iostream>
    
    class base
    {
    	virtual void on_create() { }
    public:
    	int value;
    	float another_value;
    
    	void create()
    	{
    		static base test;
    		if(*reinterpret_cast<unsigned int *>(this) != *reinterpret_cast<unsigned int *>(&test))
    		{
    			std::cout << "please, do not override on_create()\n";
    		}
    		on_create();
    	}
    };
    
    class derived : public base
    {
    	virtual void on_create(){}
    };
    
    int main(int argc, char * argv[])
    {
    	std::cout << "base\n";
    	base b;
    	b.create();
    
    	std::cout << "derived\n";
    	derived d;
    	d.create();
    }

    Родилось в попытке ограничить переопределение виртуального метода.
    Работает, цуко.
    http://ideone.com/gUN9OA

    Xom94ok, 20 Ноября 2013

    Комментарии (5)
  7. Pascal / Говнокод #14109

    +138

    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
    // прога у нас многопоточная, данный код выполняется в потоке. Создание и настройка Idhttp прописана в конструкторе потока.
    while not terminated do
        begin
           synchronize(ReadProxy);
            if ThreadExit then break;
            try
               memorystream.Position:=0;
              try
                idHTTP.Get(linknew,memorystream);
                idhttp.disconnect;
              except
                idhttp.Disconnect;
              end;
              finally
                temp:=memorystreamtostring(memorystream); // если этого не сделать, память будет утекать.
                memorystream.clear;
              end;

    Я нашел способ предотвратить утечки памяти в Indy, при Get-запросе -
    многие грешат на Indy, мол, нестабильная она в потоках, провоцирует утечки.
    Оказалось, что дело-то в tmemorystream, я его маму бля ебал!!!

    Stertor, 19 Ноября 2013

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

    −105

    1. 1
    2. 2
    3. 3
    4. 4
    - (void)reloadTableViewOnSecondaryThread
    {
    	[self performSelectorOnMainThread:@selector(reloadTableViewOnMainThread) withObject:nil waitUntilDone:NO];
    }

    Разглядывая код от заказчика нашёл вот такой перл!

    ProFFeSSoR, 06 Октября 2013

    Комментарии (5)
  9. Java / Говнокод #13884

    +80

    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
    /**
       * Форматирует double, c arround кол-вом знаков после запятой
       * @param d double
       * @param arround int
       * @return String
       */
      public static String formatDouble(double d, int arround) {
        if (arround > 6) {
          throwIllegalFormat();
        }
        StringBuffer sb = new StringBuffer(10);
        boolean minus = d < 0;
        if (minus) {
          d = -d;
        }
        for (int i = 0; i < arround; i++) {
          d *= 10;
        }
        long l = (long) (d + 0.000000001);
        do {
          char digit = (char) ('0' + (l % 10));
          l = l / 10;
          sb.append(digit);
          if (--arround == 0) {
            sb.append('.');
          }
        } while (l != 0 || arround >= 0);
        if (minus) {
          sb.append('-');
        }
        return sb.reverse().toString();
      }

    glprizes, 02 Октября 2013

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

    +126

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    <link rel="stylesheet" href="/libraries/mediaelement/mediaelementplayer.min.css">
    <link href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" rel="stylesheet">
    <script type="text/javascript" src="/js/jquery/jquery-latest.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script>
    <script type="text/javascript" src="/libraries/mediaelement/andplayer.min.js"></script>
    <script type="text/javascript" src="/js/jquery_tools.js"></script>

    Все это, пара десятков строк мутного джаваскрипта и столько же HTMLя и PHP потребовалось опытному филиппинскому сотруднику, чтобы добавить видеоролик на страницу.

    quall, 30 Сентября 2013

    Комментарии (5)
  11. JavaScript / Говнокод #13827

    +147

    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
    function SaveDataFromS() {
            if (window.sessionStorage) { 
                if ($('#dvFilter').html().length > 0 && $('.right_results').html().length > 0) {
                    var tourSearchForm = $('#dvFilter').html();
                    var searchResults = $('.right_results').html();
                    //sessionStorage.setItem('tourSearchForm', tourSearchForm);
                    //sessionStorage.setItem('searchResults', searchResults);
                }
            }
    
            var hotSearchFormSer = $('#hotelSearchForm').serialize();
            var unserialForm = $.unserialize(hotSearchFormSer);
    
            for (var x in unserialForm) {
                if (unserialForm[x] == ""
                    || x.toUpperCase() != "Hotel".toUpperCase()
                    || x.toUpperCase() != "Все+отели".toUpperCase()) {
                    //console.log('вот опять');
                    return false;
                }
            }
            location.hash = hotSearchFormSer;
        }

    Увидел на популярном поисковике отелей

    sladkijBubaleh, 20 Сентября 2013

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