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

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

    +133

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    #include <stdio.h>
    int main () {
    char c;
    int result=0;
    while(scanf("%c",&c) ) {
    if( (c<'0') || (c > '1') ) break;
    result«=1;
    result+=c-'0';
    };
    printf("%d",result);
    return 0;
    }

    Этот код переводит число из двоичной системы в десятичную. Зачем-то основано на работе с символами.

    alexmir, 29 Января 2015

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

    +155

    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
    <?php
    
    function load ($file) {
    	static $files = null;
    	$files or $files = [];
    	
    	if (!isset($files[$file])) {
    		require($file);
    		$files[$file] = true;
    	}
    }
    
    $times = 1000000;
    $time1 = microtime(true);
    
    for ($i = 0; $i < $times; $i ++) {
    	require_once('inc.php');
    }
    
    $end1 = microtime(true) - $time1;
    
    $time2 = microtime(true);
    
    for ($i = 0; $i < $times; $i ++) {
    	load('inc.php');
    }
    
    $end2 = microtime(true) - $time2;
    
    echo "require_once = $end1 vs \nload = $end2";

    Вот это да... require_once работает в ~8 раз медленнее чем функция load. Вывод:
    require_once = 16.962311029434 vs
    load = 2.6861710548401

    Содежания файла inc.php:

    <?php echo 'Hello, world!';

    volter9, 06 Января 2015

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

    +52

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    int QTabBarPrivate::indexAtPos(const QPoint &p) const
    {
        Q_Q(const QTabBar);
        if (q->tabRect(currentIndex).contains(p))
            return currentIndex;
        for (int i = 0; i < tabList.count(); ++i)
            if (tabList.at(i).enabled && q->tabRect(i).contains(p))
                return i;
        return -1;
    }

    currentIndex - видимо откат заплатил

    PS
    Cкоро всю Qt на говнокод заливать придется.
    Плохое настроение или хотите поржать - открывайте исходники Qt в случайном месте - поднимаете себе настроение идиотскими решениями - профит

    fsmoke, 23 Ноября 2014

    Комментарии (38)
  5. Си / Говнокод #17096

    +135

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    static enum rc (*request_functions[])(void) = {
        ko,
        koko,
        kokoko,
        illegal_request
    };
    static inline enum rc illegal_request(void) { return ILLEGAL_REQUEST; }
    
    reply.rc = request_functions[cmd.opcode < NKEYS(request_functions) ? cmd.opcode : ILLEGAL_REQUEST]();

    Вызываем функцию по опкоду с абортом в случае index_out_of_bounds.

    codemonkey, 12 Ноября 2014

    Комментарии (38)
  6. PHP / Говнокод #17081

    +155

    1. 1
    2. 2
    list($usec, $sec) = explode(' ', microtime());
    $s2_start = ((float)$usec + (float)$sec);

    О первом параметре функции microtime не слыхали?
    http://s2cms.ru/trac/browser/trunk/index.php#L11

    Интересное замечание: hook'и копипастом подключаются

    ($hook = s2_hook('idx_pre_redirect')) ? eval($hook) : null;
    // …
    ($hook = s2_hook('idx_pre_rss')) ? eval($hook) : null;
    // …
    $return = ($hook = s2_hook('idx_get_content')) ? eval($hook) : null;
    // и так еще 4 раза

    Функцию надо.

    volter9, 07 Ноября 2014

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

    −167

    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
    Функция НайтиСтатусРемонта(ВыбСтатус) Экспорт
    	Возврат Ремонт.Найти(ВыбСтатус, "СтатусРемонта");
    КонецФункции
    
    Процедура УстановитьДанныеСтрокиРемонта(СтатусРемонта, ДатаСтатуса, ДатаВх) Экспорт
    	СТЧ = НайтиСтатусРемонта(СтатусРемонта);
    	Попытка
    		Если СТЧ.Дата = Дата(1,1,1) Тогда
    			Попытка СТЧ.Дата = ДатаВх; Исключение КонецПопытки;
    		ИначеЕсли СТЧ.Дата <> ДатаВх Тогда
    			обСообщить(""+Ссылка+" "+СтатусРемонта+" Дата уже установлена",СтатусСообщения.Важное);
    		КонецЕсли;
    	Исключение
    	КонецПопытки;
    КонецПроцедуры

    На фоне всей базы это всего лишь цветочки ...
    Есть еще отчет, для формирования которого создается 36 (!!!) запросов )))
    Хотел отчет выложить, но ограничение из 100 строк меня остановило :(

    anton903, 27 Августа 2014

    Комментарии (38)
  8. Куча / Говнокод #16379

    +124

    1. 1
    https://support.skype.com/ru/faq/FA34438/pocemu-proizosel-vyhod-iz-moej-ucetnoj-zapisi-skype-i-poavilsa-zapros-zagruzki-poslednej-versii-programmy-cto-nuzno-sdelat-ctoby-prodolzit-ispol-zovanie-skype

    ЧПУ такой ЧПУ...
    PS, простите за тарасокод :D

    gost, 18 Июля 2014

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

    +61

    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
    #include <iostream>
    #include <iomanip>
    
    using std::boolalpha;
    using std::cout;
    using std::endl;
    
    template <class N>
    bool getbit(N var, int bit)
    {
        size_t bsz = sizeof(N)*8;
        return ((bsz>=bit)?((var>>bit)%2):(0));
    }
    
    template <class N>
    bool bitCompare(N a, N b)
    {
        size_t bsz = sizeof(N)*8;
    
    	for (size_t i = 0; i < bsz; i++)
    	{
            bool gba = getbit(a, i);
    		bool gbb = getbit(b, i);
    		if (gba != gbb)
    		{
    			return false;
    		}
    	}
    
    	return true;
    }
    
    int main(int argc, char* argv[])
    {
    	cout << "100500 == 100500:" << boolalpha << bitCompare(100500, 100500) << endl;
    	cout << "100500 == 9000: " << bitCompare(100500, 9000) << endl;
    	cout << "'H' == 'H': " << bitCompare('H', 'H') << endl;
    	cout << "'H' == 'K': " << bitCompare('H', 'K') << endl;
    
    	return 0;
    }

    Байтоебство проходили... Дамы и господа! Встречайте битоебство!

    gost, 29 Марта 2014

    Комментарии (38)
  10. PHP / Говнокод #15571

    +156

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    $query = $this->_db->prepare("SELECT * FROM `Stats` WHERE `Login` = :login");
    $query->bindParam(':login', $login, PDO::PARAM_STR);
    $query->execute();
    $result = $query->fetchAll();
    return count($result);

    SELECT COUNT - неизвестная для того человека конструкция...

    ByMsx, 25 Марта 2014

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

    +133

    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
    if (other && other->client && other->s.number < MAX_CLIENTS)
    		{//player touched me
    			/*
    			char *text;
    			qboolean	keyTaken;
    			//give him my key
                            ...
    
    			*/
    			//rwwFIXMEFIXME: support for goodie/security keys?
    			/*
    			if ( keyTaken )
    			{//remove my key
    				NPC_SetSurfaceOnOff( self, "l_arm_key", 0x00000002 );
    				self->message = NULL;
    				//FIXME: temp pickup sound
    				G_Sound( player, G_SoundIndex( "sound/weapons/key_pkup.wav" ) );
    				//FIXME: need some event to pass to cgame for sound/graphic/message?
    			}
    			//FIXME: temp message
    			gi.SendServerCommand( NULL, text );
    			*/
    		}

    FIXMEFIXMEFIXME... Да ну нахуй, лучше все закомментим.

    gost, 15 Марта 2014

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