Почему Xcode Auto indentation так плохо? и как я могу сделать это лучше? - программирование
Подтвердить что ты не робот

Почему Xcode Auto indentation так плохо? и как я могу сделать это лучше?

Я считаю, что трачу столько времени на автоматическое отступы XCode, и я должен спросить, есть ли в моих настройках что-то, что у меня есть? В принципе, если я трачу время отступы кода внутри метода, а затем копирую этот весь метод и вставляя его, вновь вставленный метод не сохраняет какое-либо из белого пространства, которое я применил к оригиналу...

Например, вот скриншот, в котором верхний метод я отступал от всех объектов массива, чтобы они были правильно выстроены... Затем я выбрал весь метод, скопировал и вставил, и вы можете видеть, что метод, приведенный ниже, отступы все испортились.

enter image description here

Я использую Xcode 4.4.1, вот мои настройки:

my indentation settings

4b9b3361

Ответ 1

Работает по назначению.

…Objects: и forKeys: должны быть выровнены, поскольку они составляют часть одной и той же сигнатуры метода.

Может быть, проще форматировать свой код, если вы используете новый синтаксис литерала объекта:

- (int)minBrokenPieces {
   NSDictionary *mapping = [NSDictionary dictionaryWithObjects:@[@"3", @"4", @"4", @"5", @"6", @"7", @"8"]
                                                       forKeys:[Note types]];
  [(NSString *)mapping[self.note.type] integerValue];
}

Что касается самого кода, представляется немного опасным определять эти константы в одном месте и типы примечаний в другом месте. Кроме того, зачем использовать строки, когда NSNumbers хватит?

(Этот код предполагает, что эта функция вызывается только из одного потока).

- (int)minBrokenPieces {
    static NSDictionary *mappings;
    if (!mappings) {
        mappings = @{
            noteType1  : @3,
            noteType2  : @4,
            noteType3  : @4,
            noteType4  : @5,
            noteType5  : @6,
            noteType6  : @7,
            noteType7  : @8,
        };
    }
    NSAssert(mappings[self.note.type] != nil, @"Used a note type for which there is no minBrokenPieces defined");
    return [mappings[self.note.type] intValue];
}