代码大全2阅读笔记11~2

可以工作的类

ADT(抽象数据类型)

是指一些数据以及对这些数据操作的集合,这些操作既向程序的其他部分描述了这些数据是怎样的,也允许程序的其他部分修改这些数据。

抽象数据类型让你可以像在现实世界一样操作实体,而不必在低层的实现上摆弄实体。

ADT益处

  • 隐藏实现细节
  • 改动不会影响整个程序
  • 让接口提供更多的信息
  • 更容易提高性能
  • 让程序正确性显而易见
  • 程序具有自我说明性
  • 无须在程序内到处传递数据
  • 可以像在现实世界那样操作实体

使用ADT的建议

  • 把常见的低层数据类型创建为ADT并使用这些ADT
  • 把向文件这样的当作ADT
  • 不要让ADT依赖于存储介质(对外提供接口,而我们不需要知道它底层到底用什么存储的)

关于类的建议

  • 类的接口应该展现一致的抽象层次,实现且仅实现一个ADT
  • 一定要知道类所实现的抽象到底是什么
  • 考虑提供成对的操作,即相反的操作
  • 不相关的信息移到其他类中
  • 尽可能让接口可编程,而不是表达语义
  • 修改时不要破坏接口的抽象
  • 不要添加和接口抽象不一致的公有成员
  • 同时考虑抽象性和内聚性:关于类的接口表现出的抽象通常更有助于深入理解类的设计

良好的封装

  • 尽可能限制类和成员的可访问性
  • 不要公开暴露私有成员
  • 避免把私有的实现细节放入类的接口中
  • 不要对类的使用者作出任何假设
  • 不要因为一个接口仅使用公用子程序,就把它归入公开接口
  • 让阅读代码比编写代码更简单
  • 避免从语义上破坏封装行
  • 避免过度耦合

Is-a和Has-a

Is-a关系考虑继承,Has-a考虑组合

创建类的原因

  • 为现实世界的对象建模
  • 为抽象的对象建模
  • 降低复杂度
  • 隔离复杂度
  • 隐藏实现细节
  • 限制变动的影响范围
  • 隐藏全局数据
  • 让参数传递更顺畅
  • 建立中心控制点
  • 让代码更易于重用
  • 为程序族做计划
  • 相关操作包装到一起
  • 实现某种特定的重构

应该避免的类

  • 避免创建万能类
  • 消除无关紧要的类
  • 避免用动词命名的类
posted @ 2020-11-26 15:46  第厘  阅读(88)  评论(0编辑  收藏  举报