苹果官方原文: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 = ,
NSHighlightModeMatrix = ,
NSListModeMatrix = ,
NSTrackModeMatrix =
} NSMatrixMode;

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

enum {
NSBorderlessWindowMask = ,
NSTitledWindowMask = << ,
NSClosableWindowMask = << ,
NSMiniaturizableWindowMask = << ,
NSResizableWindowMask = << };

用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 不同

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

  1. 【翻译】苹果官网的命名规范之 Code Naming Basics-General Principles

    苹果官方原文链接:General Principles 代码命名基本原则:通用规范   代码含义清晰 尽可能将代码写的简洁并且明白是最好的,不过代码清晰度不应该因为过度的简洁而受到影响.例如: 代码 ...

  2. 验证Xcode真伪的方法,来自苹果官网

    验证Xcode真伪的方法,来自苹果官网   Xcode的验证你的版本 2015年9月22日    注意:中文为有道翻译,看下验证方法即可.   我们最近将应用程序从应用程序商店,还建有Xcode的假冒 ...

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

    研究人员发现一种"几乎无法检测"的新型钓鱼攻击,就连最细心的网民也难以辨别.黑客可通过利用已知漏洞在 Chrome.Firefox 与 Opera 浏览器中伪造显示合法网站域名(例 ...

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

    如何在苹果官网下载旧版本的Xcode 前段时间XcodeGhost事件让很多应用中招,不乏一些知名的互联网公司开发的应用.事件的起因是开发者使用了非官方的Xcode,这些Xcode带有xcodegho ...

  5. APP Distribution Guide 苹果官网

    https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/Introduct ...

  6. [WPF] 抄抄超强的苹果官网滚动文字特效实现

    1. 前言 今天 ChokCoco 大佬发布了一篇博客 超强的苹果官网滚动文字特效实现,iPhone 我是买不起的,但不妨碍我对抄特效感兴趣,正好我这周安排的工作已经完成了,于是有空练练手实现了一个 ...

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

    依赖管理(Dependency Management)和命名规范(Naming Conventions) 依赖管理和依赖注入(dependency injection)是有区别的.为了将Spring的 ...

  8. bcache 状态/配置 文件详细介绍(翻译自官网)

    声明: 文中 斜体带下划线  的段落为翻译不够准确的段落 原文:https://www.kernel.org/doc/Documentation/bcache.txt 官网:https://bcach ...

  9. 苹果官网 demo The Elements 阅读随笔

    The Elements https://developer.apple.com/library/ios/samplecode/TheElements/Introduction/Intro.html# ...

随机推荐

  1. lnmp 一键搭建脚本

    转载注明出处!!!!!!!!! 不足之处望多多指教. 不明之处站内私. #!/bin/bash #################################################### ...

  2. 使用PagerSlidingTabStrip实现顶部导航栏

    使用PagerSlidingTabStrip配合ViewPager实现顶部导航栏. 效果图如下:          PagerSlidingTabStrip是github上的一个开源项目,项目地址如下 ...

  3. Single Vendor Project in OpenStack

    1.astara: ptl: name: Ryan Petrello irc: ryanpetrello email: ryan.petrello@dreamhost.com irc-channel: ...

  4. 基于setTimeout制作滚动广告板

    很多网站在其门户页面的上方正中央都会放置一个滚动广告板,用于显示一些推荐信息,用户点击即可进入浏览.比较常见的就是各个公司的官网,电商网站的首页等. 下面是天猫的滚动广告板截图. 其实,不需要借助于什 ...

  5. Android RelativeLayout 属性 转自互联网

    // 相对于给定ID控件 android:layout_above 将该控件的底部置于给定ID的控件之上; android:layout_below 将该控件的底部置于给定ID的控件之下; andro ...

  6. sql server 远程备份 bak 删除

    前言: 管理一个公司的一个服务器,最近有一些维护SQLserver数据库活弄,写下防止忘了. 因为公司采用SQL\Redis\MongoDB共用,SQL用来存储基础的结构\权限\等一些杂七杂八的东西. ...

  7. 5、栅格布局:ion-grid

    /* --- html ----*/ <ion-content class="tabs"> <ion-grid> <h1>没有 warp 的 i ...

  8. 第七章--Java基础类库--与用户的互动

    1.命令行编译和运行java程序在notepad++中集成java编译运行命令 参考博客:http://blog.sina.com.cn/s/blog_84405af50101q7fn.html2与用 ...

  9. C# 数据库连接增删改查

    C# 连接数据库 using System.Data.sqlCliect; // 加在头 main函数里面用法(删) //连接字符串 string Connectionstring = "s ...

  10. 【数据库】2.0 MySQL入门学习(二)——如何获得MySQL以及MySQL安装

    1.0 如何获得MySQL: www.oracle.com https://dev.mysql.com/downloads/ 2.0 例如进入Oracle官网,找到MySQL: 进入页面后,切换到“资 ...