This repository has been archived by the owner on Nov 4, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 167
Code style guide
pbdeuchler edited this page Jun 8, 2011
·
17 revisions
Kod follows the Google Objective-C Style Guide.
- Kod types and constants are prefixed with "K"
- Kod functions and variables are prefixed with "k"
It's recommended to install the Google Toolbox For Mac Xcode Plugin which adds features like a preference to clean up end of line white space from text files.
They say an example is worth a thousand words so let's start off with an example that should give you a feel for the style, spacing, naming, etc.
An example header file, demonstrating the correct commenting and spacing for an @interface
declaration
// A sample class demonstrating good Objective-C style. All interfaces,
// categories, and protocols (read: all top-level declarations in a header)
// should be commented. Comments must also be adjacent to the object they're
// documenting.
//
// (no blank line between this comment and the interface)
@interface KFoo : NSObject {
NSString *foo_;
NSString *bar_;
}
// Returns an autoreleased instance of KFoo. See -initWithString: for details
// about the argument.
+ (id)fooWithString:(NSString *)string;
// Designated initializer. |string| will be copied and assigned to |foo_|.
- (id)initWithString:(NSString *)string;
// Prefer @properties to traditional getters/setters.
@property(assign) NSString *foo;
// Label for the xyz
@property(assign) NSString *bar;
// Does some work on |blah| and returns YES if the work was completed
// successfuly, and NO otherwise.
- (BOOL)doWorkWithString:(NSString *)blah;
@end
An example source file, demonstating the correct commenting and spacing for the @implementation of an interface. It also includes the reference implementations for important methods like getters and setters, init, and dealloc.
#import "KFoo.h"
@implementation KFoo
// Prefer to use synthesized property implementations
@synthesize foo = foo_;
+ (id)fooWithString:(NSString *)string {
return [[[self alloc] initWithString:string] autorelease];
}
// Must always override super's designated initializer.
- (id)init {
return [self initWithString:nil];
}
- (id)initWithString:(NSString *)string {
if ((self = [super init])) {
foo_ = [string retain];
bar_ = [[NSString alloc] initWithFormat:@"hi %d", 3];
}
return self;
}
- (void)dealloc {
[foo_ release];
[bar_ release];
[super dealloc];
}
- (NSString *)bar {
return bar_;
}
- (void)setBar:(NSString *)bar {
[bar_ autorelease];
bar_ = [bar retain];
}
- (BOOL)doWorkWithString:(NSString *)blah {
// ...
return NO;
}
@end