Субъективный Си / Говнокод #12964 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 UncleAli, (Updated )

Комментарии (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]));
                      }
                  }

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

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

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8