Какой у вас стиль программирования на Objective-C?

Первое, что я делаю, когда включаю сторонний код в свое приложение, - это переформатирую его в соответствии с моими личными предпочтениями в кодировании:

// Single line comments only

// I never put spaces inside my parenthesis 
-(void)myOCDMethod
{    
    // If an if or for statement has only one instruction, I don't use brackets
    if (this)
        [self that];
    else
        [self somethingElse];

    // If I do have to use brackets, they go on their own lines so that they line up
    if (this)
    {
        [self that];
        [self andThat];
    }

    // I always put the pointer asterisk next to the instance name
    NSObject *variable = [[NSObject alloc] init];

    // I always put spaces around operators
    if (i == 0)
        x = 2;

}

Какой формат кодирования OCD вы используете?

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

Steph Thirion 27.11.2008 04:32

Почему компилятор не может выполнить эту оптимизацию самостоятельно? Кажется банальным ...

Nicolas Miari 07.07.2012 23:47

(Тот же вопрос относится к A? B: C;)

Nicolas Miari 07.07.2012 23:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
2 062
5

Ответы 5

Я делаю много этого, но с некоторыми отличиями:

Я всегда вставляю пробелы перед скобками и после них: -(void)myOCDMethod -> - (void) myOCDMethod

Я оставляю фигурные скобки на той же строке:

if (this) 
{
  //code
}
becomes
if (this) {
  //code
}

Если я чувствую себя особенно ОКР, я выстраиваю своих местных жителей:


float                l1;
NSArray              *array;
ReallyLongClassName  *object;

И, наконец, ТАБЛИЦЫ, а не ПРОБЕЛЫ.

Если я этого не сделаю, день не удастся. Если не считать выстраивания в очередь местных, это просто безумное излишество.

willc2 11.10.2011 11:36

Нет! Лучше всего выстроить в очередь местных и даже иваров! ;)

Nicolas Miari 08.07.2012 21:12

Практически то же самое, что и ваш, хотя я оставляю пробел между «-» или «+» и открывающей круглой скобкой возвращаемого типа. О, и я использую (условие)? (значение1): (значение2) много, в основном для присваиваний и математики ... Я знаю, что это затрудняет чтение кода, но экономит три строки ввода.

Кроме того, у него меньше накладных расходов (хотя я не знаю, заметно ли это).

Steph Thirion 27.11.2008 04:27
  1. Правильно сделайте отступ в коде
  2. Правильные разрывы строк. (Максимум один разрыв строки; разрыв строки перед каждой функцией, комментарием и т. д.)
  3. Правильные соглашения об именах

Вкладки - зло в середине строки, а пробелы качаются! Пример:

int    n;
double d;

Пусть размер табуляции будет 4. Я выделю их точками:

.   .   .
int     n;  // two tabs here
double  d;  // one tab here

Если этот код открыть на компьютере другого разработчика, где размер вкладки равен 2, он увидит следующее изображение:

. . . . .
int   n;
double  d;

Итак, вы должны либо использовать тот же размер табуляции (и это все равно не сработает, поскольку ваш код может быть повторно использован кем угодно в мире - вы не можете заставить всех), либо придерживаться пробелов. Попался?

Я нахожусь на

NSString*  aString;

лагерь, а не

NSString  *aString;

(Для переменных и аргументов)

Обоснование состоит в том, что в первом случае, похоже, говорится, что «aString - это указатель NSString», тогда как последний больше читается как «(разыменованный) * aString является объектом NSString». Особенно в Obj-C, где все объекты распределены в куче и, следовательно, на них ссылаются указатели, первый кажется менее запутанным.

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

В сигнатурах методов я использую такой интервал:

- (void) methodName:(Class*) object;

Мне нравится выравнивать двоеточия по вертикали, когда есть более двух аргументов (если первый тег параметра не намного длиннее, чем имя метода, когда он ломается). Xcode прекрасно выполняет автоматические вкладки для этого.

Все остальное как у тебя.

Вы можете прокомментировать, почему конкретный стиль кодирования (по сути, дело вкуса) заслуживает отрицательной оценки.

Nicolas Miari 27.09.2012 15:27

Другие вопросы по теме