【问题标题】:Objective-C Coding Standards? [closed]Objective-C 编码标准? [关闭]
【发布时间】:2010-10-01 00:04:41
【问题描述】:

我已经自学了大约 6 个月的 Objective-C,并且非常喜欢使用该语言。但是我没有找到任何好的编码标准,所以我写的代码总是看起来像一团乱麻。

诸如命名约定之类的东西可以很好地延续,但间距、缩进和(不可能?)80 个字符的行宽效果不太好。

您在 Objective-C 中使用哪些约定?

下面是一个不工作的小例子:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {

        self.navigationItem.leftBarButtonItem = 
        [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
                                                       target:self.parentViewController 
                                                       action:@selector(done:)] autorelease];

        NSString* units = [[NSString alloc] initWithFormat:@"%@", @"oz"];
        NSString* optionOne = [[NSString alloc] initWithFormat:@"[%d%@] Calculate", 100, units];

        self.options = [[NSMutableArray alloc] initWithObjects: 
                        optionOne, 
                        @"Configure Portions", 
                        @"Configure Notifications",
                        @"Help",
                        nil];

        [units release];
        [optionOne release];
        [tableView reloadData];
    }
    return self;
}

【问题讨论】:

标签: objective-c coding-style


【解决方案1】:
【解决方案2】:

很好的问题,感谢您的提问。

我个人的一些编码标准:

  1. 我不坚持 80 个字符,但我尽量保持在 120 个左右。 Obj-C 是一种带有“命名”参数的冗长语言,而 Cocoa 是一个更加冗长的框架。我很少需要在 VT220 上编辑代码。
  2. 我通常不会像 Xcode 想要的那样将长方法调用与垂直排列的“:”分开。我喜欢传统的直线前进,必要时换行,缩进一个制表位。
  3. 在这变得非常笨拙的地方,我将对象的创建和使用划分为多行。例如。在上面,我可能会在一行上创建选项数组,然后在下一行创建 [self setOptions:...]。无论如何,这让调试变得更简单。
  4. 我不使用点符号进行属性访问,因为我发现它隐藏了行为。我使用传统的[object property] 表示法。
  5. 我从来没有令人满意地解决 ivars 与 locals 的命名问题。 Xcode 对它们进行不同的着色,这通常是我所需要的,但我内心深处的 MSFT 家伙仍然认为实例范围前缀很有用,例如m_ 或至少 _。但我通常不这样做,因为它看起来很难看。天知道我们苹果人讨厌丑陋的东西。 :)

(对于它的价值,在上面的示例中,您可以使用 -[NSString stringWithFormat:...] 而不是 alloc/init/release 直接获取自动释放的字符串。)

【讨论】:

  • +1。我遵循几乎相同的准则,也不太喜欢Eastern Polish Christmas Tree notation
  • @dreamlax: +1 表示该符号名称。
  • 除了这些优秀的建议之外,当我让 Xcode 重新缩进整个文件时,我还会使用我得到的任何缩进。手动缩进是浪费时间,幸运的是,Xcode 做得相当不错。
  • 关于行长的注意事项。多年来我参与的大多数开源 Objective-C 项目都使用 120 个字符的行限制,但忽略了 80 个字符的限制——正如你所说,Objective-C 有点“罗嗦”坚持80个字符。通常 120 个字符的限制是一个软限制——如果你稍微超出一点但你的代码是可读的,那没关系。
  • _ 前缀 ivars 是一种很好的做法,Apple 鼓励这样做:developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/…
【解决方案3】:

不是我使用和/或喜欢它,但 Google's Objective-C Style Guide 值得一提和阅读。

【讨论】:

    【解决方案4】:

    这可能是这里的不同意见,但是……我根本不缩进单行,我打开了自动换行。这样做的好处是您可以缩小/拉伸窗口并且代码总是看起来不错,而且您不必浪费任何时间来搞乱换行符和制表符/空格来试图使您的代码看起来可以接受。

    【讨论】:

    • 这正是我所做的。
    【解决方案5】:

    这是另一个很好的来源:(我是新手,所以它不会让我在同一个答案中发布两个链接) http://cocoadevcentral.com/articles/000082.php(Obj C 的 Cocoa 风格,第 1 部分,共 2 部分)

    第 2 部分是相同的链接,但以 000083.php 结尾

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      相关资源
      最近更新 更多