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

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

    +139

    1. 1
    var date = (DateTime.UtcNow.Date > DateTime.UtcNow ? DateTime.UtcNow.AddSeconds(1) : (DateTime.UtcNow.Date < DateTime.UtcNow ? DateTime.UtcNow.Date.AddSeconds(1) : DateTime.UtcNow));

    Обнаружил сегодня в процессе код ревью (получение даты в каком-то тесте, который писал джуниор). Пребываю в состоянии когнитивного диссонанса...

    aleksandr_kesha, 14 Февраля 2014

    Комментарии (23)
  3. Си / Говнокод #14528

    +139

    1. 1
    2. 2
    #define BPP_AES_SHIFT_ROWS_II(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) \
        (a)(f)(k)(p)(e)(j)(o)(d)(i)(n)(c)(h)(m)(b)(g)(l)

    Навеяно http://govnokod.ru/14511

    Welcome to the macro hell: https://github.com/bormand/pp_aes

    bormand, 08 Февраля 2014

    Комментарии (251)
  4. Java / Говнокод #14500

    +139

    1. 1
    public boolean mkdir()

    Creates the directory named by this abstract pathname.
    Returns: true if and only if the directory was created; false otherwise


    P.S. В java.nio сделали адекватную функцию, еще один гвоздь в крышку гроба шестерки.

    bormand, 04 Февраля 2014

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

    +139

    1. 1
    Я анально воспитываю "kegdan`a".

    Horse3, 04 Февраля 2014

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

    +139

    1. 1
    #include "intel_glamor.h"

    Строка из драйвера видеокарты X11: intel_driver.c.
    Гламур спасёт мир.

    laMer007, 15 Января 2014

    Комментарии (131)
  7. Си / Говнокод #14174

    +139

    1. 1
    2. 2
    byteL = (length & (0x00ff));
    byteH = (length - byteL)>>BITS_IN_BYTE;

    Вдруг биты справа полезут прямо из компьютера, давайте вычтем!
    Макрос BITS_IN_BYTE особенно радует!

    sermp, 04 Декабря 2013

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

    +139

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    // drivers/usb/serial/cp210x.c
    
    static void cp210x_close(struct usb_serial_port *port)
    {
            usb_serial_generic_close(port);
            cp210x_set_config_single(port, CP210X_IFC_ENABLE, UART_DISABLE);
    }

    Дело было так.

    На прошлой неделе, по просьбе одного знакомого, я сел писать прошивку для attiny2313, которая должна принять по RS-232 строчку и исполнить соответствующую команду. Потратив несколько минут на раскур даташита, а именно главы, посвященной USART, я набросал тупейший код на сях, залил его на чип, и затестил через миником. Все работало нормально, ничто не предвещало беды...

    Но когда я попробовал послать команду через echo, меня ждал облом. Она не выполнилась. На 10 раз проверил код - все ок, в миникоме пашет идеально, через echo - куй. Под виндой та же ересь. Чем отличается echo от миникома? Правильно, тем, что оно отправляет символы подряд, без пауз. Контроллер тактировался от внутренного генератора, поэтому я подумал, что оный хреново откалиброван, и что надо бы его настроить... Вечер ушел на написание прошивки для калибровки... Оказалось, что частота действительно уплыла на 2% от расчетной, что некритично. Ну да пофиг, откалибровался до +-0.5%. Запустил echo - куй. Послал все нахрен, и пошел спать...

    (Продолжение в комменте ниже)

    bormand, 26 Ноября 2013

    Комментарии (49)
  9. Си / Говнокод #13960

    +139

    1. 1
    out[0] = str[0] > str[1] && str[0] > str[2] ? (out[1] = str[1] > str[2] ? (out[2] = str[2],str[1]) : (out[2] = str[1],str[2]) ,str[0]) : (str[1] > str[2] ? (out[1] = str[0] > str[2] ? (out[2] = str[2],str[0]): (out[2] = str[0],str[2]),str[1]) :(out[1] = str[0] > str[1] ? (out[2] = str[1],str[0]): (out[2] = str[0],str[1]),str[2]) );

    Сортируем 3 символа.

    Abbath, 16 Октября 2013

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

    +139

    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
    public class Switch
        {
            public Switch(object switchElement)
            {
                Object = switchElement;
            }
    
            public object Object{get; private set; }
        }
    
        public static class SwitchExtensions
        {
            public static Switch Case<T>(this Switch switchCase, Func<T, bool> isTrue, Action<T> action) where T : class
            {
                return Case(switchCase, isTrue, action, false);
            }
    
            public static Switch Case<T>(this Switch switchCase, Func<T, bool> isTrue, Action<T> action, bool fallThrough) where T : class
            {
                if (switchCase == null)
                    return null;
    
                var obj = switchCase.Object as T;
    
                if (obj != null)
                    if (isTrue(obj))
                    {
                        action(obj);
                        return fallThrough ? switchCase : null;
                    }
    
                return switchCase;
            }
        }
    
    
               //пример использования
    
                IImporter<AccountModel> result = null;
    
                new Switch(type)
                    .Case<string>(x => x == ".xls", y => result = new ExcelImporter())
                    .Case<string>(x => x == ".csv", y => result = new CsvImporter());
    
                return result;

    У нас будет свой Switch/Case с преферансом, куртизанками и экстеншен методами

    Tessen, 09 Октября 2013

    Комментарии (64)
  11. C# / Говнокод #13889

    +139

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    public Agent[] GetChildAgents(Agent parent)
    {
    	if (parent == null)
    		throw new NullReferenceException();
    		
    	// ...some code...	
    }

    Перед смертью не надышишься, зачем оттягивать неизбежное.

    yamamoto, 02 Октября 2013

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