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

    −106

    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
    - (void)addFavourite:(NSString *)path
    {    
        NSMutableArray *favourites;
        
        // Create an array if it’s not already there
        if (![[NSUserDefaults standardUserDefaults] objectForKey:@"Favourites"]) {
            favourites = [[[NSMutableArray alloc] init] autorelease];
        } else {
            favourites = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] arrayForKey:@"Favourites"]];
        }
    
        // Check if already exists
        NSUInteger idx = [favourites indexOfObjectPassingTest: ^BOOL (id obj, NSUInteger idx, BOOL *stop) {
            return [obj isEqualToString:path];
        }];
        if (idx == NSNotFound) {
            [favourites addObject:path];
        }
        
        // ...
    }

    Мало того, что работа с "избранным" раскидана по всему приложению (часть кода в AppDelegate, часть в тулбаре(!), часть во вьюшке, где рисуется таблица избранных), так ещё и изобретаем свои алгоритмы поиска.

    Запостил: fljot, 10 Ноября 2012

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

    • Я предчувствую, что скоро вступю в ряды... и поэтому беспокоюсь.
      А в Обж-Си есть макросы? Ну, чтобы, например, не писать alloc] init] autorelease] а задефайнить это где-нибудь один раз.
      Ответить
      • Ну смотри, Олег.
        Во-первых, есть клёвая IDE AppCode от JetBrains, чтобы не писать это руками.
        Во-вторых, http://stackoverflow.com/questions/1139884/how-to-create-a-macro-for-object-instantiation-in-objective-c-ansi-c
        В-третьих, доля старых iOS уже мала, и можно задуматься об использовании ARC, так что никаких autorelease, retain, release тебе больше не нужно (если я правильно представляю ARC)
        Ответить
        • Ну, предположим, использовать какой-то другой редактор я вряд ли буду :) Но я просто еще не в курсе про подробности, из чужих сорцев я вижу что там обычно немеряно повторений в коде, и праткически не встречались исходники с макросами, поэтому и спросил.
          Ответить
          • Ты погугли, AppCode на голову выше XCode что касается работы с кодом. В лучших традициях JetBrains короче.
            Ответить
            • Я как бы ни то и ни другое не буду... :) У меня как бы даже сомнений на секунду не возникло, что использовать.
              ЗЫ. Лучшие традиции JetBrain это как лучшие туфли советской кожевенно-обувной промышленности.
              Ответить
        • Перешел на ARC год назад, кстати.
          Сейчас о доле устройств с iOS <= 4.3, пользователи которых ставят приложения, можно говорить как о пренебрежимо малой (весной было менее трех процентов уже).
          Кстати, и дизайн давно делаем только под Ретину.
          Ответить
    • Показалось поначалу, что это наш бывший сотрудник написал. Но нет, UserDefaults он не знает.
      Ответить
    • Не долго занимаюсь программированием в принципе, а что не так в этом коде?
      Ответить
    • - Боже, ужас-то какой! - это я посмотрел на себя в зеркало.
      Ответить

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