[自习室]摘录代码大全:类的设计


ADT abstract data type  抽象数据类型:一些数据以及对这些数据所进行操作的集合

 类地接口应该展现一致的抽象层次(验证:methods 用于描述操作 class object  .)
一定要理解类所实现的抽象是什么(只抽象有关的实现才叫抽象)
提供成对的服务 ON/OFF OPEN/CLOSE
 不相关的信息转移到其他类中
 尽可能让接口可编程,而不是表达语义 (使用断言处理前置信息)
 谨慎在修改时破坏接口的抽象
不要添加与接口抽象不一致的公用成员
 同时考虑抽象性和内聚性。如果觉得内聚性很弱,看看这个类是不是一致的抽象

尽可能限制类和成员的可访问性

不要公开暴露成员数据 (方便修改成员数据的获取和设置)
不要把私用的实现细节放入类地接口中(使用指针指向实现)
不要对类的使用者做任何假设
让阅读代码比编写代码更方便
格外警惕从语义上破坏封装性(外部直接调用公开的类方法,而不是去看类地实现)
留意果断紧密的耦合关系(尽可能地限制类和成员的可访问性、避免友元类、基类中把数据声明为private,以降低派生类和基类的耦合程度)
避免类的公开接口暴露成员数据
类是一个黑盒子

关于继承

共享数据,创建共用的对象
共享行为,创建共同的基类,定义共用的子程序
共享数据,共享行为,创建基类,并定义共用的数据和子程序
基类控制接口时,使用继承,想自己控制接口时,使用包含


对于一个类:提供一致的抽象

成员—— 类 has a 成员 (不要超过七个数据成员)
继承:  派生类 is a 基类
如果类被设计成不可继承,就应该把他的成员定义成 final
派生类必须能够通过基类的接口而被使用,使用者不需要知道两者的差异(即方法实现了一致的功能)
确保只继承需要集成的部分
三层以内的集成


读完之后发现自己平时工作中没有分辨太清这些,大部分时候没有太过注意这些。

最多的情况是功能类似,我把它作为父类封装起来。OC引入了类别,也非常方便类的拓展和定制。

后期写代码的时候,尤其是新建一个类的时候,想清楚

  1. 几个类有什么共性,是不是一个类型,能不能抽象做一个基类。
  2. 想清楚到底暴露那些方法出来给其他类使用,平时看的太多别人的代码里面全是属性和方法放在 .h 文件里面,不必要的放到 .m 里面用匿名类目包起来
  3. 类里面的东西确实是他的吗,功能归它里面合不合适。
  4. 拓展比继承好用,但没有好方案限制拓展方法的可见范围。具体问题具体分析


最后吐槽一下:代码大全2好厚,拿起来太重了,还是PDF版本查看比较方便。

本文的博客首页地址:http://blog.csdn.net/mangosnow

不限使用,仅需保留以上博客地址


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值