工程目录和编码规范

作者: yuanxy 分类: 开发 发布时间: 2017-07-06 00:38

参考链接

ViewController代码规范
  • 声明类和方法时,注意空格的使用
  • 命名规则 Zen and the Art of the Objective-C Craftsmanship Objective-C之优雅的命名 总的来说, iOS命名两大原则是:可读性高和防止命名冲突(通过加前缀来保证). Objective-C 的命名通常都比较长, 名称遵循驼峰式命名法. 一个好的命名标准很简单, 就是做到在开发者一看到名字时, 就能够懂得它的含义和使用方法. 另外, 每个模块都要加上自己的前缀, 前缀在编程接口中非常重要, 可以区分软件的功能范畴并防止不同文件或者类之间命名发生冲突, 比如相册模块(PhotoGallery)的代码都以PG作为前缀: PGAlbumViewController, PGDataManager.
  • 常量的命名
    对于常量的命名最好在前面加上字母k作为标记. 如:
  static const NSTimeInterval kAnimationDuration = 0.3;

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

  NSString *const UIApplicationDidEnterBackgroundNotification

Tips:

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

II.全局常量(通知或者关键字等)尽量用const来定义. 因为如果使用宏定义, 一来宏可能被重定义. 二来引用不同的文件可能会导致宏的不同.

  • 枚举的命名 很简单, 到SDK里面看看Apple是怎么做滴:
  typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
  UIViewAnimationTransitionNone,
  UIViewAnimationTransitionFlipFromLeft,
  UIViewAnimationTransitionFlipFromRight,
  UIViewAnimationTransitionCurlUp,
  UIViewAnimationTransitionCurlDown,
  };

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

  • 变量和对象的命名 给一个对象命名时建议采用修饰+类型的方式. 如果只用修饰命名会引起歧义, 比如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了

  • 注释
  • 实例变量
  • 保证.h文件的简洁
  • 使用“#pragma mark”,方便阅读

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

邮箱地址不会被公开。 必填项已用*标注

标签云