Ответ 1
Рекомендации по кодированию для Cocoa - отличный ресурс для ответа на любые вопросы, связанные с именованием. Мой ответ как можно больше основан на этом.
Метод Init
Метод init выглядит хорошо.
- (id) initWithName:(NSString *) name;
Метод класса
Метод класса выглядит хорошо.
+ (NSString *) aliasForName:(NSString *) name
Методы класса также могут использоваться для создания экземпляра объекта. В этом случае API Apple обычно имеет метод, начинающийся с имени класса, такого как UIButton
buttonWithType:
, который имеет подпись:
+ (id)buttonWithType:(UIButtonType)buttonType
Методы экземпляров
Хороший ресурс для соглашений о кодировании для методов можно найти в разделе Общие правила.
Следующий метод должен опустить "and"
s:
- (void) methodWithApple:(NSString *) apple andOrange:(NSString *) orange
andMango:(NSString *) mango // BAD
Не используйте "и", чтобы связывать ключевые слова, являющиеся атрибутами получателя.
- (int)runModalForDirectory:(NSString *)path file:(NSString *) name types:(NSArray *)fileTypes;
справа
- (int)runModalForDirectory:(NSString *)path andFile:(NSString *)name andTypes:(NSArray *)fileTypes;
неверно
Подпись должна выглядеть следующим образом:
- (void) methodWithApple:(NSString*)apple orange:(NSString*)orange
mango:(NSString*)mango // GOOD
Методы делегатов
Наконец, я думаю, что есть несколько улучшений, которые могут быть сделаны по методу делегата:
- (void) statusWasChanged:(id)sender // Not horrible, but not ideal
Первое улучшение заключается в добавлении имени класса в метод.
Запустите имя, указав класс отправляемого объекта сообщение:
- (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(int)row;
- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename;
Второе улучшение заключается в использовании "DidChange"
вместо "WasChanged"
.
Используйте "сделал" или "будет" для методов, которые вызываются, чтобы уведомить делегат, что что-то случилось или должно произойти.
- (void)browserDidScroll:(NSBrowser *)sender;
- (NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)window;
Третье улучшение сильно отличает параметр отправителя. У меня нет документации для поддержки этого, однако все примеры, приведенные в примерах, описывают это поведение. Обратите внимание на (NSBrowser*)sender
и (NSWindow*)window
в приведенном выше примере кода, взятом прямо из яблочных документов.
С учетом этого метод делегата должен выглядеть больше:
- (void) senderClassNameStatusDidChange:(SenderClassName*)sender // Good
Если отправитель был объектом Person, он выглядел бы так:
- (void) personStatusDidChange:(Person*)sender // Good
Слово предостережения состоит в том, что вы не должны всегда использовать "делал" в методах делегатов.
Хотя вы можете использовать "did" или "will" для методов, которые вызывают попросите делегата сделать что-то от имени другого объекта, "должен" является предпочтительным.
- (BOOL)windowShouldClose:(id)sender;