1. Objective C / Говнокод #12964

    −100

    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
    {
    	//replace common symbols...
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@"&" withString:@"and"]];
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@"!" withString:@""]];
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@"#" withString:@""]];
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@"$" withString:@""]];
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@"%" withString:@""]];
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@"^" withString:@""]];
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@"*" withString:@""]];
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@"(" withString:@""]];
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@")" withString:@""]];
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@"+" withString:@""]];
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@"=" withString:@""]];
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@"|" withString:@""]];
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@"\\" withString:@""]];
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@"?" withString:@""]];
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@">" withString:@""]];
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@"<" withString:@""]];
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@";" withString:@""]];
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@":" withString:@""]];
    	[createWrapperName setStringValue:[[createWrapperName stringValue] stringByReplacingOccurrencesOfString:@"@" withString:@""]];
    	// ...
    }

    Так-то.

    Источник: https://sourceforge.net/p/wineskin/code/ci/master/tree/Wineskin%20Winery/Wineskin_WineryAppDelegate.m

    P. S. А тулза, между прочим, нужная. Наткнулся на багу, полез фиксить. Увидев AppDelegate.m на 2700+ строк, заинтересовался, и не зря: вышеприведенное — мелочи.

    Запостил: UncleAli, 03 Мая 2013

    Комментарии (16) RSS

    • [offtopic]
      Вот за что я и люблю Эппловские SDK: stringByReplacingOccurrencesOfString...
      [/offtopic]
      Ответить
      • Шутки про длинные имена сообщений в Obj-C перестали быть смешными 50 Obj-C-говнокодов назад, бтв.
        Ответить
        • > перестали быть смешными
          Да, это не шутки, а суровая действительность.
          Ответить
          • Ну мне норм, я в этой действительности ничего сурового уже не вижу (хотя поначалу было тяжело перебороть внутреннее убеждение, что вызов функции должен умещаться в одну строчку, в Obj-C часто приходится переносить поаргументно, иначе не влезает и/или нечитабельно).
            Ответить
            • >Ну мне норм
              Да обжептив сам по себе говнецо.
              Ничего не понимаю. Им дали Dylan - пиши, не хочу. Хочу сишкоблядствовать. Что такое?
              Ответить
              • Если в названии языка есть буква "C", это еще не значит, что он принадлежит к классу сишкоблядских.
                Ответить
                • Если использовать терминологию Березняка, то достаточным условием принадлежности к классу сишккоблядских являются одни только фигурные операторные скобки.

                  А так да, надмножество полностью обратно совместимое с Си ни в коёй мере не является сишкоблядством.
                  Ответить
                  • Единственное место, в котором я об этой обратной совместимости вспоминаю, это
                    int main(int argc, char *argv[])
                    {
                        @autoreleasepool {
                            return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
                        }
                    }

                    И то только из-за первой строчки, конечно.
                    Ответить
                  • > ни в коёй мере не является сишкоблядством.
                    правильно, просто блядством.
                    Ответить
    • видать в Китае не только трубки собирают Эппловские, но и софт там же клепают
      Ответить
    • Какой функционал в себя включает AppDelegate?
      Ответить
      • Если кратко, это главный класс, который собирает все воедино (создает само окно приложения, корневые ViewController, подключает базу данных и т.д.) и реагирует на глобальные события типа приложение запустилось / ушло в бэкграунд / вышло из него / прервалось (звонком, скажем) / изменило БД / вызвало внешний УРЛ и т.д.

        Поэтому городить там кучу всего очень сооблазнительно (ибо он, фактически, знает все про всех). Но получится говнокод. Поэтому так не делают.
        Ответить
      • > Какой функционал в себя включает AppDelegate?
        Всю логику приложения. Эта тулза, по сути, - один большой AppDelegate.m
        А в замечательном MainMenu.xib сверстано 8 окон.
        Ответить
        • Два разных ответа на один вопрос
          и оба правильные
          fascinating ))
          Ответить

    Добавить комментарий