Подтвердить что ты не робот

Objective-C Стандарты кодирования?

Я учил себя Objective-C около 6 месяцев и, как и многие другие, использовал язык. Однако я не нашел хороших стандартов кодирования, поэтому код, который я пишу, всегда заканчивается как непоследовательный беспорядок.

Вещи, подобные соглашениям об именах, переносятся просто отлично, но интервалы, отступы и (невозможно?) ширина символа 80 символов не работают так хорошо.

Какие соглашения вы используете с Objective-C?

Вот небольшой пример того, что не работает:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {

        self.navigationItem.leftBarButtonItem = 
        [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
                                                       target:self.parentViewController 
                                                       action:@selector(done:)] autorelease];

        NSString* units = [[NSString alloc] initWithFormat:@"%@", @"oz"];
        NSString* optionOne = [[NSString alloc] initWithFormat:@"[%d%@] Calculate", 100, units];

        self.options = [[NSMutableArray alloc] initWithObjects: 
                        optionOne, 
                        @"Configure Portions", 
                        @"Configure Notifications",
                        @"Help",
                        nil];

        [units release];
        [optionOne release];
        [tableView reloadData];
    }
    return self;
}
4b9b3361

Ответ 2

Отличный вопрос, спасибо, что спросили его.

Несколько моих личных стандартов кодирования:

  • Я не придерживаюсь 80 символов, но я стараюсь оставаться под 120 или около того. Obj-C - это многословный язык с "именованными" аргументами, а Cocoa представляет собой еще более длинную структуру. Мне редко нужно редактировать код на VT220.
  • Обычно я не разделяю длинные вызовы методов с ":", выстроенным вертикально, как Xcode, который вы хотите сделать. Я предпочитаю традиционную прямую вперед, с линиями, завернутыми по мере необходимости, с отступом на одной вкладке.
  • Если это становится действительно громоздким, я вырываю создание и использование объектов на нескольких строках. Например. в приведенном выше примере я, скорее всего, создаю массив параметров в одной строке и сделаю [self setOptions:...] на следующем. Это упрощает отладку в любом случае.
  • Я не использую точечную нотацию для доступа к свойствам, так как я считаю, что она скрывает поведение. Я использую традиционную нотацию [object property].
  • Я никогда не удовлетворительно решил назвать иваров против локальных жителей. Xcode окрашивает их по-разному, что обычно является всем необходимым, но парень MSFT глубоко внутри меня все еще считает, что префикс области экземпляра полезен, например. m_ или по крайней мере _. Но я обычно этого не делаю, потому что это уродливо смотреть. И добра знает, что мы, люди Apple, ненавидим уродливые вещи.:)

(Для чего в вашем примере выше вы можете получить строку с автореализацией напрямую, используя -[NSString stringWithFormat:...] вместо alloc/init/release.)

Ответ 4

Это, вероятно, особое мнение здесь, но... Я вообще не отступаю от одной строки, я включаю слово-обертывание. Преимущество этого заключается в том, что вы можете сжимать/растягивать окна, и код всегда выглядит хорошо, плюс вам не нужно тратить время на беспорядки с новыми символами и вкладками/пробелами, чтобы сделать ваш код приемлемым.

Ответ 5

Это еще один хороший источник: (я новичок, поэтому я не мог бы отправить две ссылки в один и тот же ответ) http://cocoadevcentral.com/articles/000082.php (Cocoa Стиль для Obj C часть 1 из 2)

часть 2 - это одна и та же ссылка, но заканчивается в 000083.php