2022-1-10
- 代码命名基础
-
基本原则
-
清晰,不能为了简洁而不清晰 如
暂时无法在飞书文档外展示此内容 -
尽量不要使用有歧义的缩写,但是广为人知且有确切含义的可以使用 如
暂时无法在飞书文档外展示此内容 -
api 方法名不应该有歧义,使人一眼看出能做什么
-
保持命名的一致性
-
不要自我引用,
-
使用前缀
-
避免开发中的符号与apple的框架发生冲突
-
使用两到三个大写字母,且不使用其他框架的子前缀和下划线
-
命名类,协议,方法,常量和typedef结构时,使用前缀,命名函数和结构字段时时不要使用前缀。
如
暂时无法在飞书文档外展示此内容 -
排版约定
-
方法名,首字母小写,后面每个单词首字母大写
-
变量名和常量,使用前缀并将首字母大写,每个单词首字母大写
-
不在函数名中使用下划线(实例名可以用下划线),从而避免与apple的方法发生冲突
-
类名与协议名
-
类名要包含前缀,并表现出自己是什么或者干什么的
-
协议名应该反映出它的行为表现,大多数协议都不与类相关通常以ing结尾,表示是一类行为,避免被误认为是类名;也有些与类关联的协议,通常将其命名为关联的类名
-
头文件命名
-
头文件名应预示文件包含的内容
-
如果类或者协议不属于任何一个分组,将它分离成一个只包含单个协议或者类的单独文件
-
一组相关的类或者协议,应当放在一个带有主类,类别或者协议名称的文件中,如
暂时无法在飞书文档外展示此内容 -
每个框架应该有一个头文件,包含框架包含的所有公共头文件
-
如果是对一个框架中的类或者协议进行了拓展,添加Additions到原类名后面,表示这是一个拓展类
-
相关联的方法和数据类型,应该放到一个单独的头文件中
-
- 方法命名
- 通用规则
- 开头第一个字母小写,后面每个单词首字母大写,不使用前缀
- 用动词做开头表现对象的行为,不要使用“do”或者“does”作为名字一部分,因为其缺少含义
- 获得字段值的方法,不要带有get,直接以字段名命名
- 所有变量都应该带上关键字
- 在变量之前添加解释词
- 对继承的方法进行拓展,新的关键词应放在圆方法的后面
- 不要使用and连接关键词
- 如果方法包含两个单独的行为,使用and来连接
- 访问方法(set 和 获取变量值方法)
- If the property is expressed as a noun, the format is:
- (type)noun;
- (void)setNoun:(type)aNoun;
- If the property is expressed as an adjective, the format is:
- (BOOL)isAdjective;
- (void)setAdjective:(BOOL)flag;
- If the property is expressed as a verb, the format is:
- (BOOL)verbObject;
- (void)setVerbObject:(BOOL)flag;
- 不要用分词将动词变成形容词
- 可以使用情态动词来表明含义,不要使用do 和 does
- 只有间接返回对象和值的方法才使用get
- 委托方法
- 用发送消息的对象的标识开始命名
- 类名后面加一个冒号,除非只有一个发送方一个参数
- 发布通知的方法是唯一可以不遵守上条规则的例外
- (void)windowDidChangeScreen:(NSNotification *)notification;
- 使用did 或者 will 来标识那些将要发生某些事情或者已经发生某些事情的方法
- should 比 did 和 will 更适用于去请求委托对象完成某个行为
- 集合方法
-
- (void)addElement:(elementType)anObj;
- (void)removeElement:(elementType)anObj;
- (NSArray *)elements;
-
- 方法参数
- 参数名以小写字母开头,且第一个字母一般为连接词( a )
- 不要使用pointer 或者 ptr ,用参数类型来命名参数,而不是指针
- 不使用一个字母或者两个字母作为参数名
- 避免几个字母的缩写
- 私有方法
- 一般和公有方法相同,但是需要前缀,与公有方法区分开来
- 不要使用下划线作为开头
- 通用规则
- 属性和数据类型命名
- 声明属性和实例变量
- 实例变量应该加上下划线
- 属性应该声明为一个名字或者动词
- 避免显式声明公共实例变量
- 如果需要声明显式的实例变量,请使用@private 或者 @protected 注解
- 如果你的实例变量想被访问,确保声明了访问方法
- 声明属性和实例变量