Objective-C编码标准?

Win*_*der 27 coding-style objective-c

我一直在教自己Objective-C大约6个月,并喜欢使用这门语言.但是我没有找到任何好的编码标准,所以我写的代码总是看起来像一个不一致的混乱.

像命名约定这样的东西很好,但是间距,缩进和(不可能的?)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;
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*tto 8

很好的问题,谢谢你的问题.

我的一些个人编码标准:

  1. 我不坚持80个字符,但我试着保持在120左右.Obj-C是一个带有"命名"参数的罗嗦语言,而Cocoa是一个更加冗长的框架.我很少需要在VT220上编辑代码.
  2. 我通常不会分割长方法调用,并且"X"会像Xcode一样垂直排列.我赞成传统的直线前进,根据需要包裹线条,缩进一个制表位.
  3. 如果这变得非常笨重,我会在多行上分解对象的创建和使用.例如,在上面,我可能会在一行上创建options数组,并[self setOptions:...]在下一行上创建.这使得调试更简单.
  4. 我没有使用点符号进行属性访问,因为我发现它隐藏了行为.我使用传统的[object property]表示法.
  5. 我从来没有令人满意地解决了伊娃与当地人的命名问题.Xcode以不同的方式对它们进行着色,这通常都是我需要的,但我内心深处的MSFT人仍然认为实例范围前缀很有用,例如m_或者至少_.但我通常不这样做,因为看起来很难看.善良的人知道我们苹果人讨厌丑陋的事情.:)

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

  • +1.我遵循几乎相同的指导方针,也不太喜欢[东方波兰圣诞树记法](http://www.kuro5hin.org/story/2004/6/1/43942/41236). (3认同)
  • 使用`_`前缀ivars是一种很好的做法,并受到Apple的鼓励:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CodingGuidelines/Articles/NamingIvarsAndTypes.html#//apple_ref/doc/uid/20001284-1001757 (2认同)

cob*_*bal 5

不是我使用和/或喜欢它,但谷歌的Objective-C风格指南值得一提和阅读.