• IOS编码规范


                                

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

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

  • 相关阅读:
    【.net】未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序解决办法
    【JS】JavaScript中Null和undefind区别
    【SQL】SQL中on条件与where条件的区别
    【C#】C#创建自定义Object对象
    【.NET】asp.net Redirect 图片路径
    【JQ】jq动态绑定事件.on()、解绑事件off()
    【.NET】using 语句中使用的类型必须可隐式转换为"System.IDisposable"
    C# enum、int、string三种类型互相转换
    js中Date与timestamp(时间戳)的相互转换
    2. 自动化运维系列之Cobbler给Openstack节点安装操作系统。
  • 原文地址:https://www.cnblogs.com/leevaboo/p/3563745.html
Copyright © 2020-2023  润新知