1. Список говнокодов пользователя tirinox

    Всего: 16

  2. Си / Говнокод #17904

    +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
    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
    ...
    // GRAY SCALE:
    
    #define ER_COLOR_BLACK_DEEP3        ccc3(0, 0, 0)
    #define ER_COLOR_BLACK_DEEP4        ccc4(0, 0, 0, 255)
    
    #define ER_COLOR_BLACK3             ccc3(38, 38, 38)
    #define ER_COLOR_BLACK4             ccc4(38, 38, 38, 255)
    
    #define ER_COLOR_SIDEMENU_SELECTED3 ccc3(47, 47, 47)
    
    #define ER_COLOR_LETTER_VIEW3       ccc3(51, 51, 51)
    
    #define ER_COLOR_SIDEBAR_BG3        ccc3(58, 58, 58)
    #define ER_COLOR_SIDEBAR_BG4        ccc4(58, 58, 58, 255)
    
    #define ER_COLOR_BAR_BG_GRAY3       ccc3(82, 82, 82)
    
    #define ER_COLOR_AUTHOR_NAME3       ccc3(103, 103, 103)
    
    #define ER_COLOR_SIDE_WIDGET3       ccc3(255, 255, 255)
    #define ER_COLOR_SIDE_WIDGET4       ccc4(255, 255, 255, 255)
    
    #define ER_COLOR_GRAY_TUT3          ccc3(115, 115, 115)
    
    #define ER_COLOR_GRAY3              ccc3(130, 130, 130)
    
    #define ER_COLOR_PULL_LABEL3        ccc3(142, 142, 142)
    
    #define ER_COLOR_SEND_BG4           ccc4(158, 158, 158, 255)
    #define ER_COLOR_SEND_BG3           ccc3(158, 158, 158)
    
    #define ER_COLOR_BADGE_GRAY3        ccc3(149, 149, 149)
    #define ER_COLOR_BADGE_GRAY4        ccc4(149, 149, 149, 255)
    
    #define ER_COLOR_SEPARATOR3         ccc3(195, 195, 195)
    
    #define ER_COLOR_LABELS_GRAY3       ccc3(170, 170, 170)
    
    #define ER_COLOR_AUTHOR_CAPTION3    ccc3(173, 173, 173)
    
    #define ER_COLOR_SAFE_EXIT_BG4      ccc4(189, 189, 189, 255)
    #define ER_COLOR_SAFE_EXIT_BG3      ccc3(189, 189, 189)
    
    #define ER_COLOR_MENU_GRAY_ONE3     ccc3(204, 204, 204)
    
    #define ER_COLOR_PUSHED_ELEMENT3    ccc3(205, 205, 205)
    
    #define ER_COLOR_GRAY_208_3         ccc3(208, 208, 208)
    #define ER_COLOR_GRAY_208_4         ccc4(208, 208, 208, 255)
    
    #define ER_COLOR_MENU_GRAY_TWO3     ccc3(216, 216, 216)
    
    #define ER_COLOR_NEW_GAME_BACK3     ccc3(216, 216, 216)
    #define ER_COLOR_NEW_GAME_BACK4     ccc4(216, 216, 216, 255)
    
    #define ER_COLOR_WHITE_222_3        ccc3(222, 222, 222)
    
    #define ER_COLOR_WHITE_232_3        ccc3(232, 232, 232)
    
    #define ER_COLOR_WHITE_MY_PLATE3        ccc3(243, 243, 243)
    
    #define ER_COLOR_WHITE_INTRO4       ccc4(232, 232, 232, 255)
    
    #define ER_COLOR_WHITE3             ccc3(255, 255, 255)
    #define ER_COLOR_WHITE4             ccc4(255, 255, 255, 255)

    50 оттенков серого в нашем приложении.

    tirinox, 01 Апреля 2015

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

    +26

    1. 1
    2. 2
    private:
      GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FieldGenerator);

    Корпорация добра.

    tirinox, 02 Июля 2014

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

    −195

    1. 1
    2. 2
    // optimization. Should only be used to read it. Never to write it.
    extern CGFloat	__ccContentScaleFactor;

    Может быть, я бунтарь!
    __ccContentScaleFactor = -666;

    tirinox, 20 Июня 2014

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

    +136

    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
    // Playground - noun: a place where people can play
    
    import Cocoa
    
    // Изначальный массив и ссылка на него
    var originalArray: Int[] = [1, 2, 3];   // [1, 2, 3]
    var extraArray = originalArray          // [1, 2, 3]
    
    // Поменяем во втором массиве элемент
    extraArray[0] = 666
    
    // Оппа изменился и в первом
    extraArray                              // [666, 2, 3]
    originalArray                           // [666, 2, 3] O_o
    
    // Не делись!
    extraArray.unshare()
    
    // Теперь они живут своей жизнью
    extraArray[0] = 333
    
    extraArray                              // [333, 2, 3] okay
    originalArray                           // [666, 2, 3]
    
    // А вот тут будет наоборот
    var anotherArray = originalArray        // [666, 2, 3]
    
    // auto unshare
    anotherArray.append(-1)
    anotherArray.removeLast()
    
    anotherArray[0] = 777
    
    anotherArray                            // [777, 2, 3]
    originalArray                           // [666, 2, 3]
    
    // Словари вообще не так себя ведут, всегда копирование
    
    var originalDictionary = [ 1: "hello", 2: "world"]
    var extraDictionary = originalDictionary
    extraDictionary[1] = "no way"
    
    originalDictionary      // [ 1: "hello", 2: "world"]
    extraDictionary         // [ 1: "no way", 2: "world"]

    Я восхвалял Свифт, а же его и обосру.
    В Свифте есть массивы и словари. Так вот словари при присваивании или передаче как аргумента копируются. Окей. Теперь массивы. Они, оказывается, не копируются, а разделяют значения между собой! Т. е. передал массив в ф-цию, она там что-то испортила, массив испортился везде, где засветился.
    Чтобы эту фигню остановить, нужно вызывать спец. функцию unshare
    Но это еще не все. При некоторых операциях с массивами (потенциально меняющих их длину) unshare делается автоматически!

    Предвижу классическую ошибку свифтокодеров: ожидал, что массив поменяется, а он не поменялся снаружи; или передал массив, поюзал, а он снаружи неожиданно испортился. Плюс путаница, что базовые типы ведут себя по-разному.
    Оправдание Apple: мы хотели перформанс С-массивов в Свифте, поэтому сделали эту хрень.

    tirinox, 04 Июня 2014

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

    −403

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    - (void)setButtonVisible:(bool)buttonVisible
    {
        if(isIpad)
        {
            id(*superSuperButtonVisible)(id, SEL, ...) = [[[self superclass] superclass] instanceMethodForSelector:@selector(setButtonVisible:)];
            superSuperButtonVisible(self, _cmd, buttonVisible);
        }
        else
        {
            [super setButtonVisible:buttonVisible];
        }
    }

    Угу, нет тут множественного наследования. Приходится наследоваться по очереди, а потом вызывать функции через одного.

    tirinox, 03 Апреля 2014

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

    −184

    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
    - (Pt) menuItemPos: (int) i colRef: (int *) colr
    {
        int rowBeg [6] = { 1, 8, 15, 22, 28, 100 };
        float rowNum [6] =  { 7, 7, 7, 6.0, 5.0 };// { 7.03, 6.72, 7, 5.65, 4.43 };
        int col = -5;
        int row = -5;
        for(int j = 1; j < 6; ++j)
            if(i < rowBeg[j] && i >= rowBeg[j - 1])
            {
                row = j - 1;
                col = i - rowBeg[row];
                *colr = col;
                break;
            }
        
        float S = _large ? 80 : 30;
        float W = _large ? 1474/2 : 320;
        float w = W - 2 * S;
        float dx = w / (rowNum[row] - 1);
        
       // float scX = _large ? 2.1 : 1.0;
        float scY = _large ? 2.0 : 1.0;
        float aX = _large ? 18 : 0;
        return ccp( (S + col * dx) + aX,  (210 - row * 56.0) * scY);
    }

    Хардкодинг 90 уровня. Все константы подобраны вручную, с заботой и любовью.

    tirinox, 15 Февраля 2014

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

    +127

    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
    % restarter.erl
    
    -module(restarter).
    % Save it to restart the node!
    
    % где-то в коде при запуске приложения
       ....
       ok = sync:go(),
       sync:onsync(fun(Mods) ->
                    case lists:member(restarter, Mods) of
                        true -> 
                            lager:warning("Restarting node!"),
                            init:restart(); 
                        _ -> ok
                    end  
                end),
       ....

    Клуб веселых и находчивых эрлангеров.
    Придумал такую фичу: если мне во время разработки надо перезапустить тестовую ноду, я просто жму сохранить в открытом файле restarter.erl
    Sync подхватывает пересохраненный файл, компилит его и вызывает коллбэк со списком измененных модулей. Собственно, если рестартер среди них, то нода перезапускается :)

    tirinox, 16 Января 2014

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

    +129

    1. 1
    2. 2
    Func = fun(X, Y) -> if X > Y -> true; true -> false end end,
    ...

    Из одного из видеоуроков по Erlang.
    Удивлюсь, как можно было даже в этом языке сделать boolshit...

    tirinox, 25 Декабря 2013

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

    −124

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    recognizer = [SMRecognizerConvNet alloc];
            
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
                                                     (unsigned long)NULL), ^(void) {
                recognizer = [recognizer init];
                loaded = true;
                
                DLog(@"recognizer loaded");
            });

    Спонадобилось воскресить один старый проект, а там нашлось такое...

    tirinox, 04 Октября 2013

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

    +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
    if (newGame) resources.free();
    s = FILENAME + 3;
    setLocation(); load(s);
    loadDialog.process();
    
    try { setGamerColor(RED); }
    catch(Exception e) { reset(); }
    while (notReady) { objects.make();
    if (resourceNotFound) break; }
    
    byte result; // сменить на int!
    music();
    System.out.print("");

    Читать с выражением!

    tirinox, 09 Июля 2013

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