【翻译】苹果官网的命名规范之 Naming Properties and Data Types

苹果官方原文:Naming Properties and Data Types

前言:纯属练习英语和学习。翻译错误和不通顺的地方敬请谅解和指正。O(∩_∩)O

属性和数据类型的命名

本节讲述了属性定义、变量、常量、通知和异常的常用命名规范。

l 定义属性和变量

一个属性定义会影响该属性的访问方法的定义。所以属性的命名规范大体上和访问器(getter,setter)的命名规范是一致的。如果一个属性是表达一个名词或者动词,那么定义如下:

@property(…) type nounOrVerb

例如:

@property(strong) NSString *title;

@property(assign) BOOL showsAlpha;

如果一个属性名称为一个形容词,例如可编辑的(editable),通常忽略is 前缀,但是需要为get访问器添加惯用的命名,即isEditable,例如:

@property(assign,getter=isEditable) BOOL editable;

在许多情况下,当你声明了一个属性并且同时合成了一个对应的实例变量。确保该实例变量精确的描述了该属性的含义。通常,你最好不要直接访问变量,你需要使用访问器去访问该变量。(你可以在init和dealloc方法内直接访问变量)。一般给实例变量添加一个下划线做前缀来表明该变量。例如:

@implementation MyClass{
        BOOL _showsTitle;
}

如果你通过定义属性来合成一个变量,在@synthesize中为它指定一个变量名称

@implementation MyClass

@synthesize showsTitle =_showsTitle;

当你为一个类添加变量的时候,你需要在脑海中注意以下几点:

1.避免显示的定义一个公共的变量,开发者应该关心一个接口而不是关注一个接口如何存储的数据细节。你可以通过声明属性并且合成相对应的变量的方式来避免直接定义变量。

2.如果你需要(在接口)定义一个变量,最好加上 @private 或者 @protected,如果你希望自己的类被继承,继承的类需要直接访问该变量获取数据,那么用@protected 指令

3.如果一个变量是可访问的。确保你写了该变量访问方法。(如果可能的话,定义属性吧,@property 会自动生成 getter setter方法)

l 常量

常量的命名规则通常取决于该常量的创建方式。

枚举类型的常量

用枚举来实现一组相关连的integer类型的常量。

枚举常量的定义命名方式遵循 functions命名规范。下面看一个NSMatrix.h中  的例子:

typedef enum _NSMatrixMode {
    NSRadioModeMatrix           = 0,
    NSHighlightModeMatrix       = 1,
    NSListModeMatrix            = 2,
    NSTrackModeMatrix           = 3
} NSMatrixMode;

注意 typedef 是可以省略的,你可以创建一个没有命名的枚举,例如:

enum {
    NSBorderlessWindowMask      = 0,
    NSTitledWindowMask          = 1 << 0,
    NSClosableWindowMask        = 1 << 1,
    NSMiniaturizableWindowMask  = 1 << 2,
    NSResizableWindowMask       = 1 << 3

};

用const创建常量

可以用const 创建一个float类型的常量。同样也可以创建一个integer类型的常量,如果它和其他常量不相关的话。否则,还是用枚举吧。用const定义常量的方式如下:

const float NSLightGray;

命名规则同枚举命名规则一样。

其他类型的常量

一般而言,不要用#define 预处理命令创建常量。对于integer类型的常量,用枚举,对于float类型的常量用const定义。

使用大写字母符号的预处理指令来确定一段代码是否要执行,例如:

#ifdef DEBUG

注意由系统定义的宏处理指令前后都有两个下划线,例如:

__MACH__

定义用于通知或者字典的key的string类型的常量,你能确保编译器能够识别准确的值。(它执行拼写检查)Cocoa framework提供了很多范例:

APPKIT_EXTERN NSString *NSPrintCopies;

实际上常量是在.m 文件里面给赋值的。(注意APPKIT_EXTERN 宏同object-C的extern 宏一样)

通知和异常

通知和异常的命名方式类似,但是他们都有自己的命名模式

通知

通知的命名规范如下:

[Name of associated class] + [Did | Will] + [UniquePartOfName] + Notification

例如:

NSApplicationDidBecomeActiveNotification
NSWindowDidMiniaturizeNotification
NSTextViewDidChangeSelectionNotification
NSColorPanelColorDidChangeNotification

异常的命名规范如下:

[Prefix] + [UniquePartOfName] + Exception

例如:

NSColorListIOException
NSColorListNotEditableException
NSDraggingException
NSFontUnavailableException
NSIllegalSelectorException

要注意 uniquePart 部分要使用驼峰命名法哦

备注:各个单词示意

conventions 规范,约定

property 属性

instance 实例

variable 变量

constants 常量

notification 通知

exception 异常

accessor 访问器

omits  忽略

explicitly 明确

vary 不同

时间: 2024-12-19 15:45:05

【翻译】苹果官网的命名规范之 Naming Properties and Data Types的相关文章

苹果官网那个“比更大还更大”是什么狗P翻译,我不服……

每一次苹果发布会都是两岸苹果官网的一次翻译竞赛. 大陆苹果官方又现神翻译,iPhone 6的宣传语是"比更大还更大". 向北也练练手,翻译了几个.你还有更好的翻译吗?

cnBlogs模仿苹果官网皮肤

cnBlogs博客园自定义皮肤,模仿对象是苹果官网. 内容基本都是苹果官网扒下来的CSS加以改造,做成了现在的样子. 但是因为cnBlogs自己的标签排序有些不太称手,所以改的有些蹩脚. 还有就是博客园禁用了JS,所以苹果官网上酷炫的效果就没法模仿出来了. 该工程目前正在进行阶段,不间断更新,当前更新的效果就是我博客的看上去的样子. 目前还没有进行过优化,所以冗余很多,欢迎各位看到的大大帮我指正. CSS代码如下,其他部分还没有做. 1 * { background-color: transpa

Lightning线缆如何分真假 苹果官网告诉你

今天早些时候苹果更新了支持页面,希望能够帮助顾客识别仿制或者是未经授权的 Lightning 配件.如果顾客使用了非 MFi 认证的 Lightning 线缆的话,他们很可能会遇到下面的问题: iOS 设备可能会损坏 线缆容易损坏 线缆接口或许会受损,并发热,或者是不适合你的设备 无法同步或为你的设备充电 苹果表示正版的线缆会印有“Designed by Apple in California” 和“Assembled in China,”或者是 “Assembed in Vietnam,”和“

新型钓鱼手段预警:你看到的 арр?е.com 真是苹果官网?

研究人员发现一种"几乎无法检测"的新型钓鱼攻击,就连最细心的网民也难以辨别.黑客可通过利用已知漏洞在 Chrome.Firefox 与 Opera 浏览器中伪造显示合法网站域名(例如:苹果.谷歌或亚马逊等),窃取登录或金融凭证等敏感信息. 说到辨别钓鱼网站的最佳方式,我们最先想到的是检查地址栏并查看网址是否已开启 HTTPS,然而,如果浏览器地址栏显示的是"www.арр?е.com",你是不是 100% 确信它是苹果官网呢? △ 网址 www.арр?е.com

APP Distribution Guide 苹果官网

https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40012582 About APP Distribution https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppD

如何在苹果官网下载旧版本的Xcode

如何在苹果官网下载旧版本的Xcode 前段时间XcodeGhost事件让很多应用中招,不乏一些知名的互联网公司开发的应用.事件的起因是开发者使用了非官方的Xcode,这些Xcode带有xcodeghost病毒.所以从官网下载开发工具尤为重要.希望本文会给刚接触苹果开发的朋友提供一些帮助 工具/原料 苹果开发者帐号,联网的电脑 方法/步骤 百度“苹果开发者中心“,进入以下页面.点击页面中的“Member Center" 出现登录界面.这是需要苹果开发者帐号的,没有帐号的可以选择“Create Ap

Spring mvc 4系列教程(二)——依赖管理(Dependency Management)和命名规范(Naming Conventions)

依赖管理(Dependency Management)和命名规范(Naming Conventions) 依赖管理和依赖注入(dependency injection)是有区别的.为了将Spring的优秀特性(如依赖注入)带到你的应用中,需要在编译时或运行时部署所需要的库(jar包).这些依赖不是虚拟的构件,而是文件系统上的物理资源.依赖管理的过程涉及到定位这些资源.存储资源.加入classpath.依赖可以是直接的(例如Spring运行时),也可以是间接的(例如commons-dbcp).间接

[Linux] PHP程序员玩转Linux系列-翻译nginx官网安装nginx

1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转Linux系列-备份还原MySQL 5.PHP程序员玩转Linux系列-自动备份与SVN 如何以最简单的方式安装nginx,我在查找了N多方法只后,发现还是nginx官网的方法最简单啊.在此我也来搬运一下官网的安装方式 在CentOS中安装nginx 当然是以包的安装方式最简单,nginx官网也提供了

翻译React官网文档—— 入门创建一个Hello World

React的初衷是一个用于构建View层(界面)的javascript类库.后来规模越来越多又有了ReactNative. 不赘述如何搭建react了,由于是学习我们直接用CodePen(可能需要FQ,可以自行下载免费的Lantern),Codepen中我们可以自由的修改代码 通常学习任何语言都要写一个Hello World.Tack is cheep 直接上代码 Go! ReactDOM.render( <h1>Hello, world!</h1>, document.getEl