如何编写高质量的代码二 - 类的设计
2012-10-23 18:40
399 查看
如何设计类, 关键点:
类的接口应该提供一贯的抽象。很多问题都是因为违背了这个简单的原则。
类的接口应该隐藏某些东西,比如系统接口,设计决定,或者实现细节。
应该优先采用聚合,除非你的两个类的关系很明确 " is a " 的关系。比如花是植物,那么类花应该从类植物继承。
继承很强大,但是也添加了复杂性。和前面提到的管理软件复杂度是有冲突的。
类是控制/管理复杂度的基本工具。应该尽可能的设计好每一个 类来简化系统的复杂度。
好的类接口
设计类的关键在于设计类的接口。
一个不好的类接口例子,每个接口函数都不是很直观地表达其目的。
为什么要创建类:
为世界上真实的事物建模
为抽象对象建模
减低复杂度
隔离复杂度
隐藏实现细节
限制修改代码的范围
隐藏全局数据
集中控制点
代码重用
打包类似的代码族
完成特殊的代码重构
链接:
如何编写高质量的代码
类的接口应该提供一贯的抽象。很多问题都是因为违背了这个简单的原则。
类的接口应该隐藏某些东西,比如系统接口,设计决定,或者实现细节。
应该优先采用聚合,除非你的两个类的关系很明确 " is a " 的关系。比如花是植物,那么类花应该从类植物继承。
继承很强大,但是也添加了复杂性。和前面提到的管理软件复杂度是有冲突的。
类是控制/管理复杂度的基本工具。应该尽可能的设计好每一个 类来简化系统的复杂度。
好的类接口
设计类的关键在于设计类的接口。
一个不好的类接口例子,每个接口函数都不是很直观地表达其目的。
class Program { public: ... // public routines void InitializeCommandStack(); void PushCommand( Command command ); Command PopCommand(); void ShutdownCommandStack(); void InitializeReportFormatting(); void FormatReport( Report report ); void PrintReport( Report report ); void InitializeGlobalData(); void ShutdownGlobalData(); ... private: ... };改进后的类设计
class Program { public: ... // public routines void InitializeUserInterface(); void ShutDownUserInterface(); void InitializeReports(); void ShutDownReports(); ... private: ... };
为什么要创建类:
为世界上真实的事物建模
为抽象对象建模
减低复杂度
隔离复杂度
隐藏实现细节
限制修改代码的范围
隐藏全局数据
集中控制点
代码重用
打包类似的代码族
完成特殊的代码重构
链接:
如何编写高质量的代码
相关文章推荐
- 如何编写高质量的代码一 - 设计
- 编程精粹--编写高质量C语言代码(3):自己设计并使用断言(二)
- [编写高质量代码:改善java程序的151个建议]建议42,如何让一个工具类不可实例化
- 如何编写高质量的代码
- 编写高质量代码-OC 第4章 设计与声明
- 如何编写优雅的代码:04. 设计模式(中)
- 如何编写高质量的代码——来自《代码大全(第2版)》的启示
- 如何编写高质量的VB代码
- 如何编写高质量iOS代码
- 如何编写高质量的VB代码(转自雪中漫步的专栏)
- 如何编写高质量的代码——来自《代码大全(第2版)》的启示
- 如何编写高质量的VB代码(转自天极)(很受用的)
- 如何编写高质量JAVA代码
- 编程精粹--编写高质量的C语言代码(2):自己设计并使用断言(一)
- 如何编写高质量的VB代码
- 如何编写优雅的代码:02. 设计原则
- 如何编写高质量的VB代码
- 如何编写高质量的JavaScript代码(1)
- 如何编写高质量的JavaScript代码
- 如何编写高质量的代码——来自《代码大全(第2版)》的启示