IOS编码规范

非 Y 不嫁゛ 提交于 2020-03-27 10:21:36

                            

关于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输出的宏来处理,

先写到这些,需要我们对项目负责也是对自己能力提出和习惯的负责,对我们以后的发展大有裨益。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!