构建复杂的应用程序 —— 重用与重构
实际中经常用到这样的问题:需要的程序部件和某个已有部件很像,但也略有不同。在这种情况下,一个简单想法就是把原来的代码复制一份,在其基础上修改。但是,一旦复制了代码,引入了重复片段,很多麻烦便会不可避免地出现。维护两份类似代码很麻烦,
- 不但两者都可能需要修改,
- 还要确保维护修改的一致性。
1. 重用的实现:通过继承和扩充
面向对象编程技术为解决这方面的问题提供了支持,允许基于已有基类定义新类(派生类)。这种派生类将:
- (1)继承基类的所有功能(数据域和方法)
- (2)可以定义新的数据域与方法
- (3)还可以重新定义基类里已定义的方法(覆盖已有方法)
2. 复用的度量
- 对于一个函数,如何度量其的复用程度,使用:扇入(fin-in)扇出(fan-out)
- 扇入:函数内部调用(依赖)的其他函数;
- 扇出:当前函数,被多少其他函数所依赖;
构建复杂的应用程序 —— 重用与重构相关推荐
- 程序员疯狂记事:如何利用众多技术栈构建一个 Web 应用程序?!
[CSDN 编者按]"Elixir.Phoenix.Absinthe.GraphQL.React和Apollo"--在这几个关键词中,有几个是身为开发者的你一直想玩但还没来得及玩的 ...
- 我如何构建Pomodoro Clock应用程序,以及在此过程中学到的课程
by Cynthia Lee 辛西娅·李(Cynthia Lee) 我如何构建Pomodoro Clock应用程序,以及在此过程中学到的课程 (How I built my Pomodoro Cloc ...
- 如何在 Python 中构建跨平台桌面应用程序
如何在 Python 中构建跨平台桌面应用程序 开发桌面 GUI 应用程序曾经是一个乏味.容易出错且缓慢的过程. 当然,Python 在整体上极大地简化了应用程序开发,但在 GUI 领域,仍然没有真正 ...
- trello_如何构建Trello Chrome扩展程序-API身份验证
trello 在SitePoint,我们广泛使用Trello. 当然,它有其独特之处,可以在各个领域使用一两个改进,但是在大多数情况下,它彻底改变了工作人员,作者及其编辑的协作经验. 我最近发现自己需 ...
- 如何构建Trello Chrome扩展程序-API身份验证
在SitePoint,我们广泛使用Trello. 当然,它有其独特之处,可以在各个领域使用一两个改进,但是在大多数情况下,它彻底改变了工作人员,作者及其编辑的协作经验. 我最近发现自己需要从非会员的特 ...
- 一个关于Java程序安全意识重构的工具
一个关于Java程序安全意识重构的工具 丸山胜久 日本立命馆大学计算机科学系 maru@cs.ritsumei.ac.jp 大森孝之 日本立命馆大学计算机科学系 takayuki@fse.cs.rit ...
- 构建富Internet应用程序 :使用OpenLaszlo、Eclipse Laszlo IDE和Web Tools
转载自:http://www.bianceng.cn/Programming/Java/201104/25443.htm 开始之前 本教程演示如何使用 OpenLaszlo 平台和 Web 服务来开发 ...
- 构建一个移动应用程序要花多少钱?
构建一个移动应用程序要花多少钱? How much does it cost to build a mobile app? 不幸的是,对于一个移动应用程序的开发成本应该是多少这个问题,没有一个单一的答 ...
- 如何构建虚拟护士应用程序?
如何构建虚拟护士应用程序? How to build a virtual nurse app like Sensely? 传统上,技术的进步引发了企业的变革.由最先进的计算机软件提供的交互式工具意味着 ...
最新文章
- 极客新闻——14、陈春花:关于管理,你可能一只有3个误解
- 宏基因组扩增子1图表解读-理解文章思路,零基础测序分析图表解读大全(箱线,散点,热,曼哈顿,火山,韦恩,三元,网络),老板再也不愁我的文献阅读了!
- 五轴数控转台_各式五轴加工中心的优缺点比较
- POJ 3694 (tarjan缩点+LCA+并查集)
- 帆软正则表达式定义规则
- java软件开发ea介绍_开发说明 — Eacloud 1.0 documentation
- ad域 禁用账号_IST-AD域信息同步平台来袭
- 检查和变异可查询表达式树
- 简单突破数据库备份路径拿shell
- 电脑网页如何截取全图(长图)
- 基于Microhard P900无人机PIX飞控远距离数传解决方案
- 安装redhat系统步骤图解_用u盘安装redhat图文教程
- H3C交换机关闭STP生成树协议的方法
- 【阿里云盘】2022付费考研课程
- [JAVA面试] java面试
- [blockchain-042]eos 硅谷ecs docer编译 mongo存储
- 冯诺依曼最伟大的发现?----元胞自动机
- 迷宫最短路径问题(数据结构4.4.3 拓展)
- ul(有序列表)可以排序?
- 重学C++笔记之(十三)友元、异常和其他
热门文章
- linux快速cd多层目录,linux 下 cd - cd ~- 和多目录切换技巧(示例代码)
- python中prompt的意思_PROMPT命令格式是什么意思?
- HTML自动刷新页面
- matlab file(i).name,求大佬帮忙备注一下,有点看不懂,详细一点
- linux去掉日志中的skipping,Linux日志文件总管 logrotate
- 内核参数 linux dd,Linux dd 命令详解(测磁盘的吞吐量)
- tensorflow精进之路(二十二)——使用slim模型对图像识别与检测(下)(VGG19模型)
- Qt总结之十七:QByteArray类型里含中文的数据解析出现乱码
- Qt加载osgearth时报错:0x0000xxx处未经处理的异常:0xC00005:写入位置***发生冲突
- Linux性能分析工具汇总