荼菜的ios笔记–我的编码规范参考.

what's wrong?

前言:下面是我的编码习惯。

1
2
3
4
5
6
7
8
#一、常量
相对字符串字面量或数字,我们更推荐适用常量。应使用static方式声明常量,而非使用#define的方式来定义宏。
例如:
static NSString * const NYTAboutViewControllerCompanyName = @"The New York Times Company";
static const CGFloat NYTImageThumbnailHeight = 50.0;
不恰当:
//#define CompanyName @"The New York Times Company"
//#define thumbnailHeight 2
1
2
3
4
5
6
7
#二、枚举类型
在使用enum的时候,推荐适用最新的fixed underlying type(WWDC 2012 session 405- Modern Objective-C)规范,因为它具备更强的类型检查和代码完成功能。
如:
typedef NS_ENUM(NSInteger, NYTAdRequestState) {
NYTAdRequestStateInactive,
NYTAdRequestStateLoading
};
1
2
3
#三、布尔变量
如果一个BOOL属性使用形容词来表达,属性将忽略’is’前缀,但会强调惯用名称。 例如:
@property (assign, getter=isEditable) BOOL editable;
1
2
3
4
5
6
7
8
9
10
11
#四、单例
在创建单例对象的共享实例时,应使用线程安全模式。
如:
(instancetype)sharedInstance {
static id sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#五、Import
在类的头文件中需要引用其他的类的时候,需要用@class这个关键字,这样能减少类与类之间的依赖。
如:
store.h:
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@class User;
@interface Store : NSManagedObject
@property (nonatomic, retain) User *user;
@end
Store.m:
#import "Store.h"
#import "User.h"
@implementation Store
//doSomething
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#六、CGRect函数
当需要获取一个CGRect矩形的x,y,width,height属性时,应使用CGGeometry函数,而非直接访问结构体成员。
如:
CGRect frame = self.view.frame;
CGFloat x = CGRectGetMinX(frame);
CGFloat y = CGRectGetMinY(frame);
CGFloat width = CGRectGetWidth(frame);
CGFloat height = CGRectGetHeight(frame);
不恰当:
CGRect frame = self.view.frame;
CGFloat x = frame.origin.x;
CGFloat y = frame.origin.y;
CGFloat width = frame.size.width;
CGFloat height = frame.size.height;

后话:附上之前写的文章,欢迎指正:
荼菜的iOS笔记–Core Animation 核心动画

荼菜的iOS笔记–UIView的几个Block动画
荼菜的iOS笔记–一些实用功能。
荼菜的iOS笔记–UITableViewCell的各种操作(刷新、插入、删除、动画)
荼菜的iOS笔记–一张图记住所有git命令行操作。
荼菜的iOS笔记–一张图告诉你程序员需要知道的这些网站。
荼菜的iOS笔记–图片裁剪黑魔法。
荼菜的iOS笔记–iOS自动打包脚本(Python)

荼菜的iOS笔记–iOS基础优秀博客总结ToDoList
荼菜的iOS笔记–Xcode Tips
当然,我还写过诗。。。
光。