前 言
·需求是暂时的,只有变化才是永恒的,面向变化编程,而不是面向需求编程。
·不要过分追求技巧,降低程序的可读性。
·简洁的代码可以让bug无处藏身。要写出明显没有bug的代码,而不是没有明显bug的代码。
·先把眼前的问题解决掉,解决好,再考虑将来的扩展问题。
含义清楚,尽量做到不需要注释也能了解其作用,若做不到,就加注释,使用全称,不使用缩写。
大驼峰式命名:每个单词的首字母都采用大写字母
==例:== MFHomePageViewController
·私有变量放在 .m 文件中声明
·以 _ 开头,第一个单词首字母小写,后面的单词的首字母全部大写。
==例:== NSString *_somePrivateVariable
·小驼峰式命名:第一个单词以小写字母开始,后面的单词的首字母全部大写
·属性的关键字推荐按照 原子性,读写,内存管理的顺序排列。
·Block
、NSString
属性应该使用copy
关键字
·禁止使用synthesize
关键词
==例:==
对于宏定义的常量
#define
预处理定义的常量全部大写,单词间用 _ 分隔
宏定义中如果包含表达式或变量,表达式或变量必须用小括号括起来。
对于类型常量
对于局限于某编译单元(实现文件)的常量,以字符k开头,例如kAnimationDuration
,且需要以static const
修饰
对于定义于类头文件的常量,外部可见,则以定义该常量所在类的类名开头,例如EOCViewClassAnimationDuration
, 仿照苹果风格,在头文件中进行extern
声明,在实现文件中定义其值
==例:==
·Enum类型的命名与类的命名规则一致
·Enum中枚举内容的命名需要以该Enum类型名称开头
·NS_ENUM
定义通用枚举,NS_OPTIONS
定义位移枚举
==例:==
用delegate
做后缀,如
用optional
修饰可以不实现的方法,用required
修饰必须实现的方法
当你的委托的方法过多, 可以拆分数据部分和其他逻辑部分, 数据部分用dataSource
做后缀. 如
使用did
和will
通知Delegate
已经发生的变化或将要发生的变化。
类的实例必须为回调方法的参数之一
回调方法的参数只有类自己的情况,方法名要符合实际含义
回调方法存在两个以上参数的情况,以类的名字开头,以表明此方法是属于哪个类的
==例:==
方法名用小驼峰式命名
方法名不要使用new
作为前缀
不要使用and
来连接属性参数,如果方法描述两种独立的行为,使用and
来串接它们。
方法实现时,如果参数过长,则令每个参数占用一行,以冒号对齐。
一般方法不使用前缀命名,私有方法可以使用统一的前缀来分组和辨识
方法名要与对应的参数名保持高度一致
表示对象行为的方法、执行性的方法应该以动词开头
返回性的方法应该以返回的内容开头,但之前不要加get,除非是间接返回一个或多个值。
可以使用情态动词(动词前面can、should、will
等)进一步说明属性意思,但不要使用do
或does
,因为这些助动词没什么实际意义。也不要在动词前使用副词或形容词修饰
==例:==