Как возникло соглашение не помещать пробелы в объявления методов Obj-C? - PullRequest
5 голосов
/ 22 октября 2010

Как стало принято, что в объявлении метода нет пробелов?

-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath

Кажется, что все это делают, 90% примеров, которые я вижу, сгенерированные шаблоны, код других людей и т. Д., И т. Д. Я подозреваю, что это просто еще одна идеологическая вещь vi / emacs, но мне было интересно, возможно, был K & R своего рода «первопричина» поведения.

Мне нравится много пробелов:

- (UITableViewCell*) tableView: (UITableView*) tableView
         cellForRowAtIndexPath: (NSIndexPath*) indexPath

Это кажется мне намного лучше.

Ответы [ 3 ]

3 голосов
/ 30 октября 2010

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

Когда я впервые начал использовать Objective-C, у меня была такая же проблема. Может быть непонятно, когда в длинной строке кода нет пробелов. Однако, как только вы лучше разберетесь в синтаксисе, вы заметите, что даже в вашем примере есть пробелы. Он используется для отделения сегментов имен функций от предыдущего параметра. Как только вы окажетесь там, вам будет легче выбрать каждый сегмент функции и ее параметр. Сегмент имени функции слева, параметр справа, повтор.

Сначала я сделал то, что вы перечислили - пробелы после всего. Однако это оказалось почти таким же плохим, как отсутствие пробелов. Поскольку везде были пробелы, они стали бессмысленными. Затем я попытался поставить пробелы после двоеточия и после параметра, но это тоже не показалось правильным - в некоторых случаях имя функции и параметры начинали сбивать с толку. Я попробовал несколько других стилей пробелов и в конце концов вернулся, чтобы использовать стандарт Apple почти точно. Единственное, чем я сейчас отличаюсь, это тип возвращаемого значения - я предпочитаю иметь пробел после + или - и пробел после возвращаемого типа. Даже это не так уж важно, так как в основном это личные предпочтения, а не какие-то особые трудности. (Имея богатый опыт работы с C / C ++, я хотел бы сразу увидеть тип возвращаемого значения.)

Если вы будете продолжать в том же духе, вы вдруг обнаружите, что любите яблоко по сравнению с другим. =)

1 голос
/ 22 октября 2010

Большинство селекторов достаточно короткие, поэтому вам не нужно помещать каждый аргумент в свою строку.К этому нужно привыкнуть, но без пробелов читаемость становится намного лучше.Сравните:

- (id) actionWithParam: (id) param object: (id) someObject andMore: (id) another

- (id)actionWithParam:(id)param object:(id)someObject andMore:(id)another

В первой строке ваш мозг сгруппирует такие вещи, как

param object: (id)

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

0 голосов
/ 30 октября 2010

Хорошая практика в Objective-C говорит, что каждый метод должен содержать предикат и своего рода описание его параметров (tableView: cellForRowAtIndexPath :), поэтому параметры обычно связаны с предыдущей частью имени метода.Надеюсь, что это имеет смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...