如何编写高质量的代码二 - 类的设计
2019独角兽企业重金招聘Python工程师标准>>>
如何设计类, 关键点:
- 类的接口应该提供一贯的抽象。很多问题都是因为违背了这个简单的原则。
- 类的接口应该隐藏某些东西,比如系统接口,设计决定,或者实现细节。
- 应该优先采用聚合,除非你的两个类的关系很明确 " is a " 的关系。比如花是植物,那么类花应该从类植物继承。
- 继承很强大,但是也添加了复杂性。和前面提到的管理软件复杂度是有冲突的。
- 类是控制/管理复杂度的基本工具。应该尽可能的设计好每一个 类来简化系统的复杂度。
好的类接口
设计类的关键在于设计类的接口。
一个不好的类接口例子,每个接口函数都不是很直观地表达其目的。
class Program {
public:...// public routinesvoid 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 routinesvoid InitializeUserInterface();void ShutDownUserInterface();void InitializeReports();void ShutDownReports();...
private:...
};
为什么要创建类:
- 为世界上真实的事物建模
- 为抽象对象建模
- 减低复杂度
- 隔离复杂度
- 隐藏实现细节
- 限制修改代码的范围
- 隐藏全局数据
- 集中控制点
- 代码重用
- 打包类似的代码族
- 完成特殊的代码重构
链接:
转载于:https://my.oschina.net/billzheng/blog/84654
如何编写高质量的代码二 - 类的设计相关推荐
- iOS 编写高质量Objective-C代码(八)
前言: 这几篇文章是小编在钻研<Effective Objective-C 2.0>的知识产出,其中包含作者和小编的观点,以及小编整理的一些demo.希望能帮助大家以简洁的文字快速领悟原作 ...
- 表示python代码块的是_编写高质量Python代码的59个有效方法,你用过几个
欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. 这个周末断断续续的阅读完了<Effectiv ...
- iOS 编写高质量Objective-C代码(六)
级别: ★★☆☆☆ 标签:「iOS」「Block」「Objective-C」 作者: MrLiuQ 审校: QiShare团队 前言: 这几篇文章是小编在钻研<Effective Objecti ...
- 编写高质量的代码,改善c#程序的157个建议_之1~10
//编写高质量的代码,改善c#程序的157个建议 # 1.正确操作字符串 ## 1 * 确保尽量少的装箱 * 避免分配额外的内存空间 1. 会进行一次装箱 ````C# string str1=&qu ...
- 编写高质量的代码—从命名入手(命名…
编写高质量的代码-从命名入手(命名规范) 笔者从事开发多年,有这样一种感觉,查看一些开源项目,如Spring.Apache Common等源码是一件赏心悦目的事情,究其原因,无外两点:1)代码质量非 ...
- python中如何编写代码输入多个数据并把它们放在一个列表中去_编写高质量Python代码的59个有效方法,你用过几个...
欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. 这个周末断断续续的阅读完了<Effectiv ...
- python中如何编写代码输入多个数据并把它们放在一个列表中去_这59条编写高质量Python代码的方法你知道吗?...
这个周末断断续续的阅读完了<Effective Python之编写高质量Python代码的59个有效方法>,感觉还不错,具有很大的指导价值. 下面将以最简单的方式记录这59条建议,并在大部 ...
- python编写代码避免内存增加_读书笔记(6): 编写高质量python代码的59个有效方法-完结...
前言 <编写高质量python代码的59个有效方法>这本书分类逐条地介绍了编写python代码的有效思路和方法,对理解python和提高编程效率有一定的帮助.本笔记简要整理其中的重要方法. ...
- [编写高质量iOS代码的52个有效方法](五)接口与API设计(下)
[编写高质量iOS代码的52个有效方法](五)接口与API设计(下) 参考书籍:<Effective Objective-C 2.0> [英] Matt Galloway 先睹为快 19. ...
最新文章
- 分治算法的设计思想(二分检索、二分归并排序)
- 应用程序性能分析利器 —— Visual Studio Profiler
- Linux安装/卸载软件教程
- CentOS 7——yum错误[Error: rpmdb open failed]解决方案
- list操作 rediscluster_Redis集群批量操作
- Unable to execute dex: GC overhead limit exceeded
- python模拟购物模块_python -模拟购物 -赊账版 粗糙之极
- linux voip客户端,linux搭建VOIP
- 降序排序_排序简单,应用不易,使用Excel排序的几点建议
- 物联网核心安全系列——车载物联网的加密防盗版
- python拦截tcp数据包_发送低级原始tcp数据包python
- 实用的Safari浏览器扩展工具——浏览标签太多?来一键保存!
- python用三种方式定义字符串、并依次输出_Python中字符串拼接的三种方式
- 为Struts 2.0做好准备
- 【CAN】CAN的比特率和波特率
- xp计算机怎样看ip地址,XP电脑ip地址怎么查看?XP系统怎么样查看电脑的IP地址?...
- java 阿拉伯数字日期转换为中文大写日期方法_java方法转换大写日期及人民币大写转换方式 .txt...
- Android卡顿优化
- Leetcode 跳跃游戏
- H3C服务器修改启动项,H3C服务器 iFIST快速安装指南-6W102
热门文章
- Oracle 将一个查询结果值动态赋值给一个变量
- LNMP的403问题总结
- linux下安装gcc及设置多版本gcc多版本共存(如果enable静态库,会报错,不知道为什么,忽略静态库就没问题了)...
- ubuntu系统颜色更改
- SubSonic 零代码的数据访问
- 《Ray Tracing in One Weekend》——Chapter 6: Antialiasing
- 《Ray Tracing in One Weekend》——Chapter 3: Rays, a simple camera, and background
- erp沙盘采购总监的心得_经验分享 让ERP系统操作少走冤枉路
- Hive最全学习笔记总结
- mysql数据库简单查询试题_面试题: mysql数据库 已看1 简单的sql练习