## 远孚代码规范
此文章是适用于笔者的项目
一.命名规范
1.基本要求
(1)含义清楚,尽量做到不需要注释也能了解其作用,若做不到,就加注释
(2)尽量不使用缩写
(3)每个类代码尽量控制在500行以内,每个方法控制在100行以内.
2.类的命名
(1)大驼峰式命名 每个单词的首字母都采用大写字母 且前面字母必须以 YF 开头 如:
YFHomeNearMapViewController
(2)后缀要求 如果是ViewController 就以ViewController当后缀 View 就以View当后缀, tableViewCell 就以 tableViewCell 等等 如
YFHomeNearMapViewController,YFHomeItemView,YFHomeNearTableViewCell
(3)私有变量
● 小驼峰式命名:第一个单词以小写字母开始,后面的单词的首字母全部大写 如
pickGoodsDateEnd,pickGoodsDateStart;
● 以 _ 开头,第一个单词首字母小写 如
NSMutableArray *_imageUrls;
● 私有变量放在 .m 文件中声明
//userName 注释
@property (nonatomic, copy, nullable) NSString *userName;
(4)宏定义
● 全部大写,单词间用 _ 分隔 如
//常用的宏
#define CODE_ZERO baseModel.code.integerValue == 0
● 按照驼峰命名法(带参) 如
// 设置view的圆角和边框
#define YFViewsBorder(View,radius,width,color)\
\
[View.layer setCornerRadius:(radius)];\
[View.layer setMasksToBounds:YES];\
[View.layer setBorderWidth:(width)];\
[View.layer setBorderColor:[color CGColor]];
//自定义颜色
#define CustomColor(R,G,B,A) [UIColor colorWithRed:R/255.0 green:G/255.0 blue:B/255.0 alpha:A]
● 按照驼峰命名法(不带参) 如
//获取设备的物理高度
#define ScreenHeight [UIScreen mainScreen].bounds.size.height
//获取设备的物理宽度
#define ScreenWidth [UIScreen mainScreen].bounds.size.width
(5) 枚举
● 枚举的命名和类的命名一致按照驼峰命名法
● 枚举内容的命名需要以该Enum类型名称开头,如
typedef NS_ENUM(NSInteger, MANaviAnnotationType)
{
MANaviAnnotationTypeDrive = 0,
MANaviAnnotationTypeWalking = 1,
MANaviAnnotationTypeBus = 2,
MANaviAnnotationTypeRailway = 3,
MANaviAnnotationTypeRiding = 4,
MANaviAnnotationTypeTruck = 5
};
(6) 方法
●方法的命名和类的命名一致按照驼峰命名法 另外方法名需要能完整的说明这个方法是用来干什么的,如果有带参数的参数名也要能体验传入的参数是能起到什么作用如:
/**
选中哪条数据
*/
- (void)jumpCtrlWithSelectSection:(NSInteger)selectSection selectIndex:(NSInteger) selectIndex;
二.注释
最好的代码是不需要注释的 尽量通过合理的命名
良好的代码把含义表达清楚 在必要的地方添加注释
注释需要与代码同步更新
如果做不到命名尽量的见名知意的话,就可以适当的添加一些注释或者mark
(1) 新建 model 注释 或者成员变量 如
/**
用户名
*/
@property (nonatomic, copy, nullable) NSString * userName;
//用户名
@property (nonatomic, copy, nullable) NSString * userName;
(2) 方法注释 如
/**
get 请求
@param urlString 请求地址
@param parameters 请求参数
@param successBlock 请求成功回调
@param failureBlock 请求失败回调
*/
+ (void)getWithURLString:(NSString *)urlString
parameters:(id)parameters
success:(SuccessBlock)successBlock
failure:(FailureBlock)failureBlock;
三.UI 布局
1.使用纯代码布局 需要是用Masonry进行添加控件之间的约束
2.使用 xib 或者 storyboard 进行页面布局 需要添加约束
目前项目主要采用的是基于AutoLayout的 xib 布局 这个最重要的是不允许添加约束有冲突的约束 如