Как настроить авто-отступ Xcode для параметров Objective C? - PullRequest
6 голосов
/ 24 ноября 2011

Вот фрагмент кода из моего приложения для iOS:

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Do you like my hat?"
                                                    message:@"If so, please help spread the word by rating our app now?"
                                                   delegate:nil
                                          cancelButtonTitle:@"No Thanks"
                                          otherButtonTitles:@"Sure!", @"Maybe Later", nil
                          ];

Почему строки отступа Xcode так кровавы? Будучи старой Perl, Ruby и JavaScript обезьяной, я был бы более склонен сделать отступ вручную, например, так:

    UIAlertView *alert = [[UIAlertView alloc]
        initWithTitle:     @"Do you like my hat?"
        message:           @"If so, please help spread the word by rating our app now?"
        delegate:          nil
        cancelButtonTitle: @"No Thanks"
        otherButtonTitles: @"Sure!", @"Maybe Later", nil
    ];

Таким образом, имена и значения параметров выровнены по левому краю и имеют отступ только на один уровень (4 пробела для меня). При этом используется гораздо меньше экранного пространства, и менее вероятно, что мне придется иметь дело с переносящимися линиями (которые делают крайне правые отступы еще сложнее при чтении) на моем MacBook Air.

Тем не менее, я предполагаю, что есть некоторая причина, по которой Apple предпочитает первый метод, и поэтому имеет отступ Xcode таким образом. Или есть?

Итак, у меня два вопроса:

  • Как вы предпочитаете делать отступы параметров метода в коде Objective C?
  • Как настроить Xcode для форматирования с предпочитаемым стилем отступа?

Не пытается начать священную войну здесь; Мне более любопытно узнать, каковы лучшие практики среди программистов Objective-C, как Xcode помогает с этими практиками, и выяснить, есть ли веские основания для того, как Xcode делает это по умолчанию.


Обновление: Комментаторы и ответы указывают, что форматирование по умолчанию выравнивает параметры в их двоеточиях. Я должен был помнить это перед публикацией, так как я, конечно, заметил это, и когда самый длинный элемент не имеет большого отступа, он может выглядеть довольно хорошо. Но я считаю, что обычно самый длинный элемент имеет с большим отступом. Например:

UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"Do you like my hat?"
                                message:@"If so, please help spread the word by rating our app now?"
                               delegate:nil
                      cancelButtonTitle:@"No Thanks"
                      otherButtonTitles:@"Sure!", @"Maybe Later", nil
                      ];

Почему это? Даже если бы я хотел, чтобы они выровнялись в двоеточиях (и я часто отформатировал их для этого), кажется глупым делать такие отступы. Почему он настаивает на отступе до уровня вводной кишки? Почему бы не один уровень отступа с закрывающей скобкой, обозначенной концом «блока» отступа? Например:

UIAlertView *alert = [[UIAlertView alloc]
        initWithTitle:@"Do you like my hat?"
              message:@"If so, please help spread the word by rating our app now?"
             delegate:nil
    cancelButtonTitle:@"No Thanks"
    otherButtonTitles:@"Sure!", @"Maybe Later", nil
];

Похоже, что по умолчанию лучше, чем рекомендация по длине строки руководства по стилю Google , нет?

Есть ли способ настроить Xcode для форматирования параметров таким образом?

Ответы [ 2 ]

5 голосов
/ 24 ноября 2011

1) Соглашение об отступе Objective-c выравнивается по знаку двоеточия при задании нескольких параметров.

пример

функция:

- (void)functionWithOne:(NSString *)one two:(NSString *)two tree:(NSString *)three;

Должен быть отформатирован в:

- (void)functionWithOne:(NSString *)one 
                    two:(NSString *)two 
                  three:(NSString *)three;

Я пришел с Java, и мне было очень трудно сначала привыкнуть. Но после нескольких попыток сделать это по-другому, это действительно лучший способ.

2) Я не думаю (я не уверен), что вы можете изменить это в xcode. Соглашение Apple довольно ясно, как оно.

EDIT: Вызовы. Я лично начинаю с первого параметра и выравниваю остальные как:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Do you like my hat?"
                                                message:@"If so, please help spread the word by rating our app now?"
                                               delegate:nil
                                      cancelButtonTitle:@"No Thanks"
                                      otherButtonTitles:@"Sure!", @"Maybe Later", nil];
3 голосов
/ 14 января 2013

Я не уверен, как отформатировать его в Xcode, но есть два варианта для инструментов форматирования кода:

  1. Использовать Uncristify , есть инструмент с графическим интерфейсом для его настройки: UncrustifyX
  2. Используйте AppCode, iOS / OSX IDE от Jetbrains - он имеет настраиваемое и встроенное форматирование.Смотрите скриншот.

AppCode code formatting tool

...