iOS -- Effective Objective-C 阅读笔记 (7)

1: 实现 description 方法

NSlog 在输出自定义的类时, 只输出了 类名 和 对象的内存地址. 要想输出更为有用的信息也很简单, 只需要覆写 description 方法并将描述此对象的字符串 返回即可.

- (NSString*)description{

return     xxxxxxx;

}

有个简单的办法, 可以在 description 中输出很多互不相同的信息, 那就是借助 NSDictionary 类的 description 方法.

- (NSString *)description{

return  [NSString stringWithFormat:@"%@",@{@"title: _title, @"age":@(_age)"}];

}

NSObject 协议中还有一个方法  debugDescription , 此方法的用意与 description 非常相似, 二者的区别在于,  debugDescription 方法是开发者在调试器中以控制台命令 打印对象时才调用的.  在 NSObject  的默认实现中, 此方法只是直接调用了 description

使用方法, 我们在创建实例所用的代码后面插入断点, 然后通过调试器, 使其暂停于此, 当程序运行到断点时, 开发者就可以向调试器控制台中输入命令了,

‘po‘ 命令, 可以完成对象打印的 (prient-object) 工作.

同样, 你也可以覆写 debugDescription 的方法, 使其更合你意.

总结:

实现 description 方法返回一个有意义的字符串, 用以描述该实例

若想在调试时打印出更详细的对象描述, 则应实现 debugDescription 方法,  ‘po‘ 命令, 打印对象

2: 尽量使用不可变对象

设计类的时候, 应充分运用属性来封装数据. 而在使用属性时, 则可将其生命为 ‘只读‘. 默认情况下, 属性是 ‘可读可写的‘, 这样设计出来的类都是 ‘可变的‘. 不过, 一般情况下,我们要建模的数据未必需要改变.

具体到编程实践中,则尽量把对外公布出来的属性设为只读, 而且在只有却又必要的时候对外公布.

总结:

尽量创建不可变的对象

3: 使用清晰而协调的命名方式

尽量使用  ‘驼峰式大小写命名法‘

方法命名 长度要适中, 表达清晰, 且言简意赅.

给方法命名时的注意事项

(1) 如果方法的返回值是新创建的, 那么方法名的首个词应是返回值的类型, 除非前面还有修饰语.属性的存取方法不遵循这种命名方式.  属性的存取方法应该按照其对应的属性来命名.

(2) 应该把表示参数类型的名词放在参数前面.

(3) 如果方法要在当前对象上执行操作. 那么就应该 包含动词, 若执行操作时还需要参数. 则应该在动词后面加上 一个 或多个名词.

(4) 不要使用 str 这样的简称, 而应该使用 String 这样的全称.

(5) Boolen  属性应加上 is 前缀, 如果某方法返回非属性的 Boolean 值, 那么应该根据其功能, 选用 has 或  is 当前缀.

(5) 将 get 这个前缀 留给那些 借由 ‘ 输出参数‘ 来保存返回值的方法.

类与协议的命名

应该为类与协议的名称加上前缀, 以避免命名空间冲突. 而且应该像给方法起名时那样吧词句组织好, 使其从左至右读起来较为通顺.

类 与 协议的命名惯例, 命名方式应该协调一致.

总结:

起名时应遵循从标准的 OC 命名规范

方法名要言简意赅, 从左至右读起来顺畅

方法名里不要使用缩略后的类型名称

为私有方法命名规范

以 ‘p_‘ 开头命名私有方法, 这样容易区分

不要但用一个下划线 ‘_‘ 做私有方法的前缀, 因为这种方法是预留给苹果公司的.

时间: 2024-11-08 07:22:52

iOS -- Effective Objective-C 阅读笔记 (7)的相关文章

iOS Testing with Xcode 阅读笔记

官方文档直通车 Performance Testing A baseline is a combination of the average time performance in ten runs of the test method with a measure of the standard deviation of each run. 执行一次性能测试时,measureBlock内的代码会被执行十次! Where to Start When Testing When you start

Effective C++ 阅读笔记_条款27 尽量少做转型动作

Effective C++ 阅读笔记_条款27 尽量少做转型动作 1.转型的三种形式,可以分为两大类. (1)旧式转型(old-style casts) (1.1) (T) expresstion (1.2) T (expression) (2) 新式转型(c++-style casts) (2.1)const_cast<T> (expression) (2.2)dynamic_cast<T> (expression) (2.3)reinterpret_cast<T>

IOS测试框架之:athrun的InstrumentDriver源码阅读笔记

athrun的InstrumentDriver源码阅读笔记 作者:唯一 athrun是淘宝的开源测试项目,InstrumentDriver是ios端的实现,之前在公司项目中用过这个框架,没有深入了解,现在回来记录下. 官方介绍:http://code.taobao.org/p/athrun/wiki/instrumentDriver/ 优点:这个框架是对UIAutomation的java实现,在代码提示.用例维护方面比UIAutomation强多了,借junit4的光,我们可以通过junit4的

&lt;游戏开发中的人工智能&gt; -- 阅读笔记

到家已经几天了, 休息了一阵, 是时候重新学习知识了. 接下去一段时间, 会啃<游戏开发中的人工智能>这本书, 顺便写写笔记. 马上就大三了, 想想自己选的游戏方向, 现在还蛋疼. 选了一个自己喜欢的方向, 但是确实最忙的一个,这也意味着少时间继续我的iOS学习. 也不知道是对是错. 既然选了,就学吧. 好不,不扯多了.接下去是该系列的笔记.(持续更新) 第一章: 游戏人工智能简介 1. 定性AI与非定性AI 定性行为或其表现是特定的,而且是可预测的,没有不确定性. 非定性行为有某种程度的不确

Effective Objective-C 2.0 笔记三(Literal Syntax简写语法)

当使用Objective-C的时候,你总会遇到Foundation 框架中的一些类,这些类包括NSString,NSNumber,NSArray和NSDictionary,这些数据结构都是自解释的. Objective-C以简明详细的语法而著名,自从oc1.0有一个简单的方式定义一个NSString变量,我们可以这样声明一个字符串变量 NSString *[email protected]"Hello Lves"; 没有这种语法之前,我们创建一个字符串变量需要先alloc然后init.

《STL源代码剖析》---stl_deque.h阅读笔记(2)

看完,<STL源代码剖析>---stl_deque.h阅读笔记(1)后.再看代码: G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_deque.h 完整列表 /* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this software * and its documentation f

《STL源码剖析》---stl_deque.h阅读笔记(2)

看完,<STL源码剖析>---stl_deque.h阅读笔记(1)后,再看代码: G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_deque.h 完整列表 /* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this software * and its documentation fo

QCon 2015 阅读笔记 - 移动开发最佳实践

所有ppt下载地址:http://pan.baidu.com/s/1mg9o4TM 下面是移动开发实践部分的阅读笔记. 移动开发网络性能优化实践 - 陈浩然 (携程) 携程是非常标准的移动App架构,基础是各种Infrastructure Frameworks, 基于上面是UI的控件库,运行时的库(猜测用于动态配置).最上层是业务层面,各个App层可以相对独立形成业务模块化.同时也是Hybrid的架构,有Web Container来实现WebApp的模块. 网络服务 Native TCP连接 +

QCon 2015 阅读笔记 - 其他精选主题

QCon 2015阅读笔记 QCon 2015 阅读笔记 - 移动开发最佳实践 QCon 2015 阅读笔记 - 团队建设 QCon 2015 阅读笔记 - 其他精选主题 以前分享过两个主题:移动开发最佳实践和团队建设,有兴趣可以通过上面传送门进入.这次我的阅读笔记会比较分散,希望能够把一些我认为不错的主题介绍一下. 论DevOps式思维方式 - Chris Van Tuin 分三个维度介绍如何加速软件研发,表明软件研发的趋势 How: 开发模式 - 瀑布流.敏捷.DevOps What: 软件

《构建之法阅读笔记02》

这次主要对<构建之法>的第四章“两人合作”作一次阅读笔记. 首先是代码规范问题. 我过去对于代码规范问题并没有做到注意.在编程中,许多变量和函数的命名都非常的简单而没有实际的意义.而且编程时不注意对齐缩进.很多时候也不加注释,导致对这些简单的变量名称不熟悉. 这样做会使得很多人读代码费劲,甚至是自己都要花时间再次阅读懂自己的代码.而且很多没必要的注释也会使得注释失去意义.当自己再次在原基础上编程时,可能要重新编程等问题. 因此,通过阅读“代码规范”,我找到一些解决方法.代码的风格要简明.易读.