博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何编写高质量的代码二 - 类的设计
阅读量:6591 次
发布时间:2019-06-24

本文共 986 字,大约阅读时间需要 3 分钟。

hot3.png

如何设计类, 关键点:

  • 类的接口应该提供一贯的抽象。很多问题都是因为违背了这个简单的原则。
  • 类的接口应该隐藏某些东西,比如系统接口,设计决定,或者实现细节。
  • 应该优先采用聚合,除非你的两个类的关系很明确 " 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:   ...};

为什么要创建类:

  • 为世界上真实的事物建模
  • 为抽象对象建模
  • 减低复杂度
  • 隔离复杂度
  • 隐藏实现细节
  • 限制修改代码的范围
  • 隐藏全局数据
  • 集中控制点
  • 代码重用
  • 打包类似的代码族
  • 完成特殊的代码重构

链接:

转载于:https://my.oschina.net/billzheng/blog/84654

你可能感兴趣的文章
网络安全—xss
查看>>
MySQL Optimization 优化原理
查看>>
【译】Quora 问答:为什么老师说我不适合编程?
查看>>
SQL Server 学习 SQL 语句 ( 三 )
查看>>
Node.js 静态服务器新知
查看>>
AlwaysOn 进阶 Level 1:What is "SQL Server AlwaysOn"?
查看>>
webpack搭建多页面系统(三) 理解webpack.config.js的四个核心概念
查看>>
JavaScript作用域
查看>>
【295天】跃迁之路——程序员高效学习方法论探索系列(实验阶段53-2017.11.27)...
查看>>
Spring之面向切面
查看>>
Cloud + TiDB 技术解读
查看>>
Mysql迁移新环境索引损坏
查看>>
物联网协议之CoAP协议开发学习笔记之常用开源代码实现
查看>>
一些Mac的使用技巧
查看>>
spring event发布及监听实例
查看>>
JavaScript 之银弹の技法
查看>>
html+css+js开发文本编辑器,有各种排版功能!
查看>>
jQTips · 动态添加元素的清爽写法
查看>>
基于Thinkphp5+phpQuery 网络爬虫抓取数据接口,统一输出接口数据api
查看>>
webApp实战开发,仿网易新闻webApp
查看>>