IOS编码规范
来源:互联网 发布:行测怎么提高常识 知乎 编辑:程序博客网 时间:2024/06/06 13:22
1、每个.h文件最开始处用简短文字说明一下该类的功能逻辑。
2、声明类或方法时,注意空格的使用,参数过多时可换行保持对齐
调用方法时也是如此,参数都写在一行或换行冒号对齐
3、命名规则
(1)类名首字母大写,方法首字母小写,方法中的参数首字母小写,同时尽量让方法的命名读起来像一句话,能够传达出方法的意思,同时取值方法前不要加前缀“get”
- (void)replaceObjectAtIndex:(NSUInteger)index
withObject:(id)anObject;
如果有参数,函数名应该作为第一个参数的提示信息,若有多个参数,在参数前也应该有提示信息(一般不必加and)一些经典的操作应该使用约定的动词,如initWith,insert,remove,replace,add等等。(2)变量名小写字母开头
int chosenBtnIndex=[self.cardBtn indexOfObject:sender];
(3)常量(预定义,枚举,局部常量等)使用小写k开头的驼峰法,比如
kInvalidHandle ,
kWritePerm
示例:
#define kRunAnnotationStartPointTitle @"起点"
建议书写枚举模仿苹果——在列出枚举内容的同时绑定了枚举数据类型NSUInteger,这样带来的好处是增强的类型检查和更好的代码可读性
typedef NS_ENUM (NSInteger,RunGoalTypeE){
kRunGoalTypeNone = 0, //无目标
kRunGoalTypeTime = 1, //以时间为目标
kRunGoalTypeDistance = 2, //以距离为目标
};
引用块内容
NSString *const kGroupInfoName =@”name”;
4、关于注释
程序中变量、方法命名尽量能以字面意思表示功能,对于需要用注释来解释的部分代码,注释以如下格式表述:
/** * 方法或变量说明 * @param 参数1说明(针对方法) * @param 参数2说明(针对方法) * @return 若方法有返回值则对返回值作说明 */
5、类中第个功能模块以 #pragma mark - 分隔,上空两行,下空一行,方便阅读代码,析构函数- (void)dealloc{}最好放到类最上面,第一眼就可以看到这个方法,可以方便看到是否remove了:
#pragma mark - 生命周期 - (void)dealloc {} - (instancetype)init {} - (void)viewDidLoad {} - (void)viewWillAppear:(BOOL)animated {} - (void)didReceiveMemoryWarning {} #pragma mark - set方法和get方法 - (void)setCustomProperty:(id)value {} - (id)customProperty {} #pragma mark - IBActions - (IBAction)submitData:(id)sender {} #pragma mark - Public - (void)publicMethod {} #pragma mark - Private - (void)privateMethod {} #pragma mark - 数据源和代理方法 -> 遵循的协议方法全部放这下面#pragma mark - UITextFieldDelegate #pragma mark - UITableViewDataSource #pragma mark - UITableViewDelegate #pragma mark - NSCopying - (id)copyWithZone:(NSZone *)zone {} #pragma mark - NSObject -> 下面放继承自NSObject的方法- (NSString *)description {}#pragma mark - UIView -> 下面放继承自UIView的方法- (void)layoutSubview()
6、变量声明时变量名前面加下划线“_”,局部变量不用加。
7、头文件引用,标注类型,对于模块使用@import
// Frameworks@import QuartzCore;// Models#import "NYTUser.h"// Views#import "NYTButton.h"#import "NYTUserView.h"
8、对于获取视图的坐标大小采用以下方法
CGRect frame = self.view.frame; CGFloat x = CGRectGetMinX(frame); CGFloat y = CGRectGetMinY(frame); CGFloat width = CGRectGetWidth(frame); CGFloat height = CGRectGetHeight(frame);
9.对于系统的常用类作实例变量声明时加入后缀:
UIViewController:VC UIImage:Img UIImageView:ImgView UIView:View UIButton:Btn
10、NSString, NSDictionary, NSArray, NSNumber相关赋值
NSArray *names = @[@"Brian", @"Matt", @"Chris", @"Alex", @"Steve", @"Paul"]; NSDictionary *productManagers = @{@"iPhone" : @"Kate", @"iPad" : @"Kamal", @"Mobile Web" : @"Bill"}; NSNumber *shouldUseLiterals = @YES; NSNumber *buildingZIPCode = @10018;
11、定义静态变量尽量表达详细明确
static const NSTimeInterval NYTArticleViewControllerNavigationFadeAnimationDuration = 0.3;
不建议使用:
static const NSTimeInterval fadetime = 1.7;
12、POST请求参数字典的写法,
// NSDictionaryOfVariableBindings这个宏生成一个字典,这个宏可以生成一个变量名到变量值映射的Dictionary,比如:
NSNumber * packId=@(2); NSNumber *userId=@(22);NSNumber *proxyType=@(2); NSDictionary*param=NSDictionaryOfVariableBindings(packId,userId,proxyType);
13、扩展分类方法时, 在方法名前加前缀
推荐使用:
@interface NSArray (LGJ_Accessors)- (id)lgj_objectOrNilAtIndex:(NSUInteger)index;@end
不建议使用:
@interface NSArray (LGJ_Accessors)- (id)objectOrNilAtIndex:(NSUInteger)index;@end
14、 相同的逻辑方法定义避免在多个地方出现,尽量将公用的类、方法抽取出来
15.、删除未被使用的代码,不要大片注释未被使用的代码,确定代码不会使用,请及时删除
16、 项目中所有Group或者文件名称(图片名字等),不要使用汉字命名,尽量使用英文命名,国内特有名词可以使用拼音。
17、NSLog在测试完成后一律删除或注释。
- iOS上编码规范
- iOS 编码规范
- ios 编码规范
- iOS编码规范
- iOS编码规范
- ios编码规范
- ios开发编码规范
- iOS 编码规范
- iOS-CoCoa编码规范
- IOS 编码规范
- iOS编码规范文档
- iOS单元测试编码规范
- iOS单元测试编码规范
- ios 编码规范
- IOS 编码规范建议
- iOS编码规范
- iOS 编码规范
- ios编码规范
- Apache Spark 的一些浅见。
- 生成验证码
- 使用ruby的gem安装gem包的SSL证书错误
- Unable to locate package错误解决
- hdu_2838_Cow Sorting(树状数组求逆序对)
- IOS编码规范
- android使用NFC的读模式
- Linux内核驱动基础(8)gpio用户空间另一使用案例
- 浅析STM32的hex文件
- 关于runlevel后的显示3或者5
- Android BottomSheet:List列表或Grid网格展示(3)
- 冒险岛
- Gtest在vs 2010上的配置
- setResult和onActivityResult的用法小记