12

Apple 的 Objective-C 文档、参考资料和生成的代码似乎与他们的编码风格完全不一致。我无法确定 Objective-C 和 Cocoa 源代码的“首选”样式(如果存在)。

这是我到目前为止遇到的。

标签设置

Xcode 的默认设置是选项卡。但是,无论您的选项卡设置如何,生成的项目始终创建有 4 个空格。更糟糕的是,一些生成的代码有杂散的标签。下载的代码示例似乎也因项目而异。

方法定义间距

在 Apple 的示例代码中,不同风格的方法定义甚至在单个文件中也有所不同。但最常见的间距样式似乎在-or+和仅加法参数之间的空格之间包含空格。Xcode 参考库中也使用了这种风格,这让我相信它是首选风格。

- (IBAction)reloadData:(id)sender;
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex

不一致的变量:

- (IBAction) reloadData:(id)sender;
- (IBAction)reloadData:(id) sender;
-(IBAction)reloadData:(id)sender;
- (IBAction) reloadData: (id)sender;
- (id)tableView: (NSTableView *)aTableView objectValueForTableColumn: (NSTableColumn *)aTableColumn row: (NSInteger)rowIndex

大括号样式

另一件广泛不一致的事情是大括号样式。流行的款式有两种:

在自己的行上打开大括号:

  @interface Foo : NSObject
  {
  }

  - (id)init
  {
  }

在方法声明的同一行打开大括号:

  @interface Foo : NSObject {
  }

  - (id)init {
  }

问题

Apple 是否有推荐的 Objective-C 编码风格?如果不是,你喜欢什么风格,为什么?

4

1 回答 1

9

我发现我一直在将生成的项目设置为自己喜欢的样式,因此我根据自己的喜好编辑了模板文件(用于缩进的选项卡,在自己的一行上的大括号)。文件在这里:

/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates/

我选择所有内容,使用 cmd-[ 删除所有缩进(根据文档需要多次),然后执行 Edit->Format->re-indent。为了方便起见,我将它连接到 shift-cmd-[ 。

我已经看到了示例代码和项目模板的样式差异,并且只是假设这是由于文件的年龄不同造成的。我猜他们有不同的内部编码风格指南已经改变。

这是 Google Obj-C 风格指南:

http://google-styleguide.googlecode.com/svn/trunk/objcguide.xml

还有一个来自 CocoaDevCentral 的不错的:

http://www.cocoadevcentral.com/articles/000082.php

如果你真的想遵循 Apple 规则,Objective C 编程指南有一堆代码示例可以从中获取规则。

https://developer.apple.com/library/mac/documentation/cocoa/conceptual/ProgrammingWithObjectiveC/

于 2009-07-03T06:17:22.750 回答