《代码大全》笔记 06 - 可以工作的类

豆瓣:https://book.douban.com/subject/1477390/

《Code Complete》2d ed,CC2

  • 软件开发技术的发展,先是直接基于语句来思考编程问题,然后发展到基于子程序来思考,到现在是基于类来思考。

  • 类是由一组数据和子程序构成的集合,这些数据和子程序共同拥有一组内聚的、明确定义的职责。

抽象数据类型

  • 抽象数据类型(ADT,abstract data type)是指一些数据以及对这些数据所进行的操作的集合。
  • 可以隐藏实现细节。

  • 改动不会影响到整个程序。

  • 让接口能提供更多信息。

  • 更容易提高性能。

  • 让程序的正确性更显而易见。

  • 程序更具自我说明性。

  • 无需在程序内到处传递数据。

  • 可以基于高层抽象操作实体,不用关注细节。

良好的类接口

  • 类的接口为隐藏在其后的具体实现提供了一种抽象。
  • 如果类的接口不能展现出一种一致的抽象,那该类的内聚性就很弱。

  • 接口不应只基于语义表达而设计,应基于可编程设计,即编译器能识别并强制实施接口的意图。

良好的封装

  • 尽可能限制类和成员的可访问性。
  • 不要公开暴露成员数据。

  • 避免把私用的实现细节放入类的接口中。

  • 不要对类的使用者做出任何假设。

  • 避免使用友元类。

  • 警惕从语义上破坏封装性。有时上帝视角是坏事。

有关设计和实现的问题

  • 包含(has a)才是面向对象编程中的主力技术,而非继承。
  • 类的数据成员数量最好不要超过 7 个。

  • 继承适用于“是一个……”(is a)的关系。

  • 继承遵循里氏替换原则。

  • 避免让继承体系过深。

创建类的原因

  • 为现实世界中的对象建模。
  • 为抽象的对象建模。

  • 降低复杂度。

  • 隔离复杂度。

  • 隐藏实现细节。

  • 限制变动的影响范围。

  • 隐藏全局数据。

  • 让参数传递更顺畅。

  • 建立中心控制点。

  • 让代码易于重用。

2019-12-28 - 廖杰良

发布了99 篇原创文章 · 获赞 64 · 访问量 14万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章