最近公司因为业务增多,又招了一个iOS小伙伴,内心无比开心呀。但是多了一个人,日常代码开发就要统一规范起来,方便日后维护和查找。下边列一下我日常用到一些代码规范。
(一)、SVN规范
1、代码一定要先update,(解决冲突),然后在commit。
2、代码提交。
【人员】【动作】【动作内容】
如果代码中增加、修改文件,要写清楚增加了那个模块,那个文件夹,做什么功能的。
如果对代码进行删除,一定要和PM确定这个文件无用了,然后再删除文件,同时记得删除服务器上的文件。
如果对文件进行移动,要写清楚文件从哪里移动到了哪里,同时记得移动服务器上的文件。
eg:
【石智力】【添加】【首页 --生活 添加轮播图。。。SDCycleScrollView 】
【石智力】【修改】【首页 --生活 添加轮播图。。。】
【石智力】【删除】【首页 --生活 添加轮播图。。。SDCycleScrollView 】
【石智力】【移动】【首页 --生活 添加轮播图。。。SDCycleScrollView 从A移动到B】
(二)、代码开发规范
一、工程结构方面
1、新建工程目录下一定只有4个文件夹(前三个为实体文件夹,最后一个为group的虚拟文件夹),ThreeLib(放置所有导入的第三方包)、NetWork(放置app内所有网络请求)、CodeClass(放置整个app的功能模块代码)、ConfigFile(app的配置文件:assets,info,pch,header)。
2、ThreeLib第三方没啥好说的,假如使用pod管理第三方也要建有这个文件。
3、NetWork所有的网络请求都放这里,所有请求的前缀,写在request的头部,请求的地址、注释、方法依次写在下边;
connect是对AF等其他网络组件的封装,请求超时时间宏定义在这里,假如要做加密、解密统一在这里做就好了;
同时下边放置网络请求失败和请求结果暂无数据等相关的页面。
4、CodeClass中的代码按照功能模块划分,大的模块下建设具体页面的文件夹,然后每个模块在进行MCV模式划分,每个文件开头一定是这个模块的单词,避免文件和其他同事建设的文件重名。也可以在模块后边再加上创建者的名字缩写,O(∩_∩)O~,然后是具体小功能。model一定以model结束,view以view或者cell结束,VC以VC结束。
5、ConfigFile这里主要放置配置文件。header文件一律放到ProjectHeader文件中,文字、时间、字体,颜色,尺寸,等定义放到common文件,common和header文件放到pch文件。
二、编码规范
1、编码通用的哪些规范就不一一枚举了,说也没意思,但是一定要争取做到。
2、所有view,vc,都要继承base中的父类,不要直接从view或者VC中继承,便于后期维护和增加公用处理。
3、所有新建的文件第一件是是导入pg结构块(我自己定义的),所有方法放到对应的模块不允许乱放,便于日后查找方法。
#pragma mark - -------------------------life cycle--------------------------
#pragma mark - -------------------------content view--------------------------
#pragma mark - ----------------------private methods--------------------
#pragma mark - ----------------------public methods--------------------
#pragma mark - ----------------------event response---------------------
#pragma mark - -------------------------delegate -------------------------
#pragma mark - -------------------------network--------------------------
#pragma mark - ----------------------getter and setter--------------------
4、进入控制器的第一步打印进入某某页面的log,然后是才是setUIView方法。
5、用户响应事件一定有log,凡是有判断的地方必有注释和log,switch上方必有大段解释。魔法数字,必有注。所有方法一般不要超过30行,超过必有大段、多处注释。
6、字号、颜色、尺寸尽量用common中定义的,没有则自己添加定义。
7、view传递跳转等事件尽量使用响应者链就行传递,避免block和delegate。
8、传值尽量用block,事件尽量用delegate。
9、添加文件杜绝拖拽添加,一定要addfile。
10、所有涉及时间的东西一律用宏定义,除非特殊情况不单独设置时间。
11、一个方法用到第三回的时候就是你对他进行封装的时候。
12、不做哑巴程序员。