关于IOS行业编程的统一规范,我们在提升编码自身简洁和性能方便要注意,也是一个优秀的程序员必备的素质,鉴于之前交接的项目,希望我们外包的程序在这方便按着规范的要求。
1、 首先是内存管理,有new 、alloc的对象如果不是ARC管理的必须有释放,dealloc写在@implementation下面,init放到其下面,方便查阅,需要autorelease的也要写上,比如tableView创建cell的时候,发现i摩比移动端有忘记写autorealse的现象。
2、 通知中心注册需要在dealloc中对应remove掉对象,一个对象的delegate对象要在dealloc中及时赋nil。
3、 大量的创建对象和销毁对象需要建立一个自动释放池,方便局部内存管理。
4、 关于魔数,我们不要硬编码,这样不知道这个数字代表什么,我们最好是写成枚举,也知代表什么,方便管理的同时也不会引起一些冲突,
5、 关于网络这块,我想我们网络需要再一两个文件里统一管理,不管是有系统的AFNetwork还是常用的第三方的ASIHTTPRequest还是最新的NKNetwork我们都需要统一管理,方便接口的查看,两外在请求的时候我们要做好管理机制,请求需要我们做好中断操作等各种网络的优化,咱们移动端有卡的现象。
6、 关于数据的统一管理,数据管理是一个很重要的模块直接关系到代码的简洁性,和应用的体验性,首先解析的时候一定要写一个专门的数据解析类,这些数据给一个对象不同的数据属性,我们用的时候就很方便了,解析要判断数据异常的情况,比如空数据,空字符串,我们要怎样处理,例如常有的NULL我们需要给NSObject写一个分类。把NULL转化为nil处理
7、 相似的东西要统一归类处理,这样方面管理,不管是网络,数据库,数据,还是图片处理等,
8、 命名方式一定要驼峰式命名,意思表达简单明白,不要随意命名,随意明白引起代码的可读和可记忆行差。
9、 delegate对象使用assign,或者ARC引入的变量属性weak,防止引起循环引用。
10、 一般判断BOOL的时候 例如:BOOL A = [object action];不要直接if(A == YES)这样判断 直接if(A)
11、 数据和视图分离,这是我们的基本编程模式,但是在移动端还是用这样的问题,我们在处理自己返回来的数据是,我们要专门些一个数据解析类,不管是静态方法还是动态方法这样我们这就用,不用在cellfor。。。这样的创建cell的时候再去解析,这样数据视图分离,第一:可以代码简洁,方便查看和管理,这个不言而喻,第二:最终的是,不如解析也放到视图创建者,让视图加载的时间更长更卡,这样使软件的体验更差,我们i摩比移动端就是这样,很卡顿。后续我们维护代码也很麻烦。
12、 不要些 if(){
}else{
if(){
if(){
if(){
}else{}
}else{}
}else{}
}else{
}
}
类似这样的判断我们办法简化明了,因为这样的东西不管是让自己过两天再看,还是让别人再看都很绕,是不是?我们可以用其他语句,三目选择运算,switch,宏处理,或者是我自己编译方法这类,能简化就简化,不要超过2层这样的if判断,要不然谁都受不了。
13、 移动端遇到一个常识问题 c = a/b; 没有做任何判断这家出现这样的语句,如果b万一为0呢?是吧所以必须if(b){c= a/b}。
14、 在建立工程的时候关于文件的归类, libs放入我们使用的第三方SDK ,自定义的放到一类,例如这家建立一个Custom文件,都是自己的分类,数据处理类这类的,每个功能块放到一个group。
15、 不用的NSLog 即使注释掉或删掉,测试完后一律删除掉,或者加上#ifndef__OPTIMIZE__
#define NSLog(…)
#else
#define NSLog(..)
#endif
或者这一个选择Debug输出的宏来处理,
先写到这些,需要我们对项目负责也是对自己能力提出和习惯的负责,对我们以后的发展大有裨益。