首页

时间和精神的房子
壹只iOS程序员的修行世界,欢迎来访

如果文章对您有所帮助
将是我最大的荣幸

Cocoa代码风格指南之使用规范(四)

代码使用规范实在太多,这里暂时列出部分。一些比较复杂的规范需要单独说明,列表如下。

  1. 整形数的使用规范
  2. 使用CGGeometry方法获取CGRect数据
  3. 属性内存管理相关修饰符的使用规范
  4. 属性声明在implementation与extension的使用规范

  • :Apple 明确给出建议
  • :Google 明确给出建议
  • :通用做法(主观)

简单使用规范

  • 不要在 init 方法中,将成员变量初始化为 0 或者 nil。毫无必要。

  • 仅需要使用 [[Class alloc] init] 来生成对象时,才可以使用 new 来代替。

Google 在 MRC 下的建议是“不要使用 NSObject 类方法 new,也不要在子类中重载它”,理由是"由于类方法 new 很少使用,这使得有关内存分配的代码审查更困难"。由于在 ARC 下无需担心内存管理的问题,所以在仅需要 [[Class alloc] init] 时也可以使用 new 来代替。

  • 保持公共 API 简单。避免 “厨房水槽(kitchen-sink)” 式的 API。如果一个函数压根没必要公开,就不要这么做。用私有类别保证公共头文件整洁。

  • 当包含一个使用 Objective-C、Objective-C++ 的头文件时,使用 #import 。当包含一个使用标准 C、C++ 头文件时,使用 #include。头文件应该使用 #define 保护。

  • 字符串应使用 copy 属性。

  • 接受 NSString 作为参数的 setter,应该总是 copy 传入的字符串。

  • 使用 nil 的检查来检查应用程序的逻辑流程,而不是避免崩溃。Objective-C 运行时会处理向 nil 对象发送消息的情况。

  • Objective-C 的方法标识符中,只使用 BOOL。

  • 不要直接比较 YES/NO 和 BOOL 变量。不仅仅因为影响可读性,更重要的是 BOOL 为无符号字符型,这样比较的结果可能与你预期的不同。

BOOL great = [foo isGreat];
if (great == YES) // 错误
if (great) // 正确
  • 只运行在 iOS 下的代码,优先考虑使用自动 synthesize 实例变量。

关注作者

分享本文

目录