CODE COMPLETE 2e Chapter 6

程序员的首要使命:管理复杂服


1、类的目标:开发程序其他部分时,可以安全的忽视程序中尽可能多的其余部分,总体目标是像在现实世界一样操作实体,而不必在意底层的实现;

2、隐藏实现细节(修改一处而达到修改所有其他地方)、容易日后提高性能、程序的自我说明性更好;

3、类的接口设计:展现出一致的抽象层次、强内聚性、提供成对的服务、把不相关的信息转移到其他类中、尽量让接口可编程而不是表达语义(比如routine A 必须要Routine B之前调用,这类函数不应该做为接口,也就是说尽量让程序员不看类的内部实现可以轻松用起来这个类)、在增加类的方法时不要破坏一致的抽象层次;

4、抽象:提供一个让你忽略实现细节的模型来管理程序的复杂度; 封装:强制阻止你看到细节;

5、尽可能的private成员函数,不要把数据成员公有,避免把私有的成员函数放入接口;

6、私有属性在头文件中,不利于封装,方法是彻底将接口和实现分开,在接口的私有数据中保存一个指向实现类的对象的指针即可;

7、避免使用友元类,增加了复杂度;

8、阅读代码的次数远比写代码的次数多,时刻注意代码的质量;

9、注意抵制从语义上破坏封装性:比如,A的..函数会调用B的..函数,所以不用在B的函数调用前去调用A的函数;总结的意思就是,这个函数内部有一些细节你不看代码就不会知道,这类破坏封装的操作成为语义破坏封装;  错误是接口不仅仅依赖于抽象,还依赖于实现;

10、 包含关系(有一个...)、继承关系(是一个...);

11、类的数据成员不要超过 7 个;

12、慎用继承:派生类必须能通过基类的接口而被使用,而且使用者无需知道两者的区别;

13、继承层次控制在3层以内,不同的人认为是7层;

14、类的成员函数尽可能少、禁止一些你不需要的运算符重载(设置为private)、间接调用尽可能少(即A类的方法传入B类,调用B类的方法),总结来说,减少类和类之间的合作的范围;

15、构造函数要初始化全部数据成员;

16、优先选用深拷贝;

17、为什么要创建类? 降低复杂度、隔离复杂度、隐藏实现细节、复用代码;

18、避免创建万能类、无间紧要的类、动词命名的类


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值