iOS开发培训教程 iOS代码命名规范

  当下ios程序员是很多年轻人趋之若鹜的热门职业,高端的环境和高薪的报酬是最关键的两大要素,没有系统参与过ios培训教育的同学很可能在日后因为没有一个好的代码规范而影响自身的工作效率,本文主要讲述一些ios开发代码中命名的规范。



  iOS开发培训教程 iOS代码命名规范:

  总的来说, iOS命名两大原则是:可读性高和防止命名冲突(通过加前缀来保证). Objective-C 的命名通常都比较长, 名称遵循驼峰式命名法. 一个好的命名标准很简单, 就是做到在开发者一看到名字时, 就能够懂得它的含义和使用方法. 另外, 每个模块都要加上自己的前缀, 前缀在编程接口中非常重要, 可以区分软件的功能范畴并防止不同文件或者类之间命名发生冲突, 比如相册模块(PhotoGallery)的代码都以PG作为前缀: PGAlbumViewController, PGDataManager.

  1). 常量的命名

  对于常量的命名最好在前面加上字母k作为标记. 如:

  static const NSTimeInterval kAnimationDuration = 0.3;

  定义作为NSDictionary或者Notification等的Key值字符串时加上const关键字, 以防止被修改. 如:

  NSString *const UIApplicationDidEnterBackgroundNotification

  Tips:

  I. 若常量作用域超出编译单元(实现文件), 需要在类外可见时, 使用extern关键字, 并加上该类名作为前缀. 如 extern NSString *const PGThumbnailSize

  II.全局常量(通知或者关键字等)尽量用const来定义. 因为如果使用宏定义, 一来宏可能被重定义. 二来引用不同的文件可能会导致宏的不同. P.S. 对于#define也添加一下前缀k(强迫症, 哈哈...)

  2). 枚举的命名

  对于枚举类型, 经常会看到之前的C的定义方式:

  typedef enum : {

  CameraModeFront,

  CameraModeLeft,

  CameraModeRight,

  } CameraMode;

  不知道是肿么了, 每次看到这种定义方式总是感觉怪怪的, 作为一个正宗的iOS开发者当然要以Objective-C的方式来定义啦, 哈哈... 那Objective-C是怎么定义的呢? 很简单, 到SDK里面看看Apple是怎么做滴:

  typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {

  UIViewAnimationTransitionNone,

  UIViewAnimationTransitionFlipFromLeft,

  UIViewAnimationTransitionFlipFromRight,

  UIViewAnimationTransitionCurlUp,

  UIViewAnimationTransitionCurlDown,

  };

  这边需要注意的是: 枚举类型命名要加相关类名前缀并且枚举值命名要加枚举类型前缀.

  3). 变量和对象的命名

  给一个对象命名时建议采用修饰+类型的方式. 如果只用修饰命名会引起歧义, 比如title (这个到底是个NSString还是UILabel?). 同样的, 如果只用类型来命名则会缺失作用信息, 比如label (好吧, 我知道你是个UILabel, 但是我不知道它是用来做什么的呀?). So, 正确的命名方式为:

  titleLabel //表示标题的label, 是UILabel类型

  confirmButton //表示确认的button, 是UIButton类型

  对于BOOL类型, 应加上is前缀, 比如- (BOOL)isEqualToString:(NSString *)aString这样会更加清晰. 如果某方法返回非属性的 BOOL 值, 那么应根据其功能, 选用 has 或 is 当前缀, 如- (BOOL)hasPrefix:(NSString *)aString

  Tip: 如果某个命名已经很明确了, 为了简洁可以省去类型名. 比如scores, 很明显是个array了, 就不必命名成scoreArray。

  创客学院iOS培训讲师温馨提示:创客学院ios在线课程聘请具有多年从业经验的顶级讲师,可以更好的由浅入深学习和了解ios代码规范,在网站内部有相关的免费视频讲座,有兴趣的同学可以前往观看。

                                                             查看更多关于“iOS开发培训”的相关资讯>>

the end

评论(0)