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_' 开头命名私有方法, 这样容易区分

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

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

  1. iOS Testing with Xcode 阅读笔记

    官方文档直通车 Performance Testing A baseline is a combination of the average time performance in ten runs ...

  2. Effective Java, 3e阅读笔记一

    引言 本书的目标是帮助读者更加有效地使用Java编程语言及其基本类库,适用于任何具有实际Java工作经验的程序员. 本书一共90个条目,12章,每个条目讨论一条规则,这些规则反映了最有经验的优秀程序员 ...

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

    QCon 2015阅读笔记 QCon 2015 阅读笔记 - 移动开发最佳实践 QCon 2015 阅读笔记 - 团队建设 QCon 2015 阅读笔记 - 其他精选主题 以前分享过两个主题:移动开发 ...

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

    所有ppt下载地址:http://pan.baidu.com/s/1mg9o4TM 下面是移动开发实践部分的阅读笔记. 移动开发网络性能优化实践 - 陈浩然 (携程) 携程是非常标准的移动App架构, ...

  5. SDL源码阅读笔记(1) 基本模块

    write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 前言 对于大牛来说,写关于阅读源码的文章都会叫源码剖析或者深入浅出啥的,对于我,自己阅读阅读源码,写 ...

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

    看完,<STL源代码剖析>---stl_deque.h阅读笔记(1)后.再看代码: G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_deque. ...

  7. 阅读笔记 1 火球 UML大战需求分析

    伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本   <火球 UML大战需求分析>,首先 ...

  8. [阅读笔记]Software optimization resources

    http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++   7. The efficiency of differe ...

  9. 《uml大战需求分析》阅读笔记05

    <uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...

  10. <<UML大战需求分析>>阅读笔记(2)

    <<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...

随机推荐

  1. JAVA项目启动正常,无法访问

    若是一般项目web.xml问题  springboot是静态资源问题

  2. 第二章· Redis管理实战

    数据类型 管理实战 数据类型 String: 字符串类型 Hash: 哈希类型 List: 列表类型 Set: 集合类型 Sorted set: 顺序集合类型 管理实战 通用操作

  3. Elasticsearch6.x和Kibana6.x的安装

    Elasticsearch6.x的安装(centos6.x下) Elasticsearch6.x目前需要至少jdk8的支持,关于如何安装jdk不在讲述.Oracle的推荐安装文档可以在Oracle的网 ...

  4. BZOJ4643 卡常大水题 【Tarjan】

    题目分析: 给所有边按A排序,依次加入再按B递增排序,势能分析可以发现是O(n^4)的 代码: #include<bits/stdc++.h> using namespace std; ; ...

  5. 【系统架构】软件核心复杂性应对之道-领域驱动DDD(Domain-Driven Design)

    前言 领域驱动设计是一个开放的设计方法体系,目的是对软件所涉及到的领域进行建模,以应对系统规模过大时引起的软件复杂性的问题,本文将介绍领域驱动的相关概念. 一.软件复杂度的根源 1.业务复杂度(软件的 ...

  6. java 11 ZGC(可伸缩,低延迟的gc)

    ZGC, A Scalable Low-Latency Garbage Collector(Experimental) 可伸缩,低延迟的gc ZGC, 这应该是JDK11最为瞩目的特性, 没有之一. ...

  7. elasticsearch简单实现

    初次接触分布式是全文搜索引擎,之前都是spinx+coreseek,先简单实现初步了解先 官方文档:https://www.elastic.co/guide/cn/elasticsearch/guid ...

  8. GO语言系列(四)- 内置函数、闭包与高级数据类型

    一.内置函数.递归函数.闭包 内置函数 1. close:主要用来关闭channel 2. len:用来求长度,比如string.array.slice.map.channel 3. new:用来分配 ...

  9. 金融量化分析【day111】:Matplotib-图标标注

    一.图像标注 1.股票 df = pd.read_csv('601318.csv') df.plot() plt.plot([1,3,4,5]) plt.plot([5,8,7,9]) plt.tit ...

  10. Shell脚本之grep

    1. 过滤空行   grep -v ^$