- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式软件及重构——总论
通过本次课程,你想学到什么? 本次培训内容 重构的定义; 嵌入式软件的重构; 坏味道; 重构的实例(6个) ; 重构在现实开发中的推广和障碍; 成立重构研究小组; 什么是程序?什么是软件? 一、重构的定义 重构——关于本次培训 重构——我的感受 重构的至理名言 任何一个傻瓜都能写出计算器可以理解的代码,唯有写出人类容易理解的代码,才是优秀的程序员; 事不过三,三则重构; 当你接获bug提报,请先撰写一个单元测试来揭发这个bug; 当你感觉需要撰写注释,请先尝试重构,试着让所有的注释变得多余; 当你发现自己需要为程序增加一个特性,而代码结构使你无法方便的这样做,就先重构那个程序; 重构的至理名言 重构之前,必须建立一套可靠的测试机制; 写软件就像种树,优秀的程序员挖成小坑后随及填好,继续挖下一个,只会产生一系列小坑,不会有大坑, 菜鸟则不会意识到所挖的坑正在变大,还是不停的挖,直到自己掉进大坑,爬不出来,陷入无尽的痛苦深渊; 开发时间越长,越能体会垃圾代码的痛苦,却不知道如何改进; Kent Beck:我不是一个伟大的程序员,我只是个有着一些优秀习惯的好程序员而已; 重构的定义: 对软件内部结构的一种调整,目的是在不改变软件之可察性前提下,提高其可理解性,降低其修改成本。 重构的作用 重构作用的高度总结 增加软件的可读性,可维护性,可测试性; 单元测试,同行评审,培训的完美组合; 模块化的必然之路; 软件开发的长远眼光,未来的受益者; 从编码层次上升的软件设计层次; 重构的起源? 我们或多或少都做过的事情; 更多的存在于专家领域; 优秀程序员的自觉行为与菜鸟的被迫行为; 没有总结,提炼成一种思想,一种标准来指导我们 ; 二、嵌入式软件的重构 嵌入式软件的重构 缺点I. 面向对象的软件设计和结构化设计不一样;II. 侧重于软件的设计而不是具体的实现;III. 面向对象的核心——继承和多态在结 构化设计中无法表达; IV. 嵌入式软件更多的和硬件打交道,更注重 软件的实现,面向对象的软件则重视软件 的设计和复用; 嵌入式软件的重构 优点I. 软件的核心思想是一样的;II. 函数和数据都和面向对象基本一致,原有的 class可以转换成模块的思想,对象之间的重 构可以看作模块之间的重构。 III. 代码模块相当于面向对象的类; IV. 共同的软件质量属性——可测试性,可读性, 可维护性; V. 嵌入式软件代码规模小,更适合重构,见效 更快; 三、坏味道 坏味道 改进软件,最重要的是要知道改进哪里,Kent给了我们很生动的描述——“坏味道”。 当我们察看代码的时候,每个人的嗅觉是不一样的,嗅觉灵敏的一下子就可以察觉到那些坏味道的存在; 嗅觉能力是需要培养的,这就是资深工程师和入门者之间的差别。 坏味道举例 重复的代码: 如果你在一个以上的地点看到相同的程序结构,那么可以肯定:设法将它们合而为一,程序将变得更好。 过长函数: 程序愈长愈难理解。更应该积极的分解函数,需要注释的地方提炼出去。条件式和循环常常也是提炼的信号。 过小结构 : 过多单一全局变量,合并成结构进行统一管理。 数据泥团: 参数,变量数据,函数集中管理,修改成结构。 坏味道举例 讨论 四、重构举例 重构方法——提炼函数: 1)小结:有一段代码可以被组织在一起独立出来,将这段代码放进一个独立函数中,并让函数名称解释该函数的用途。 2)动机:对付过长的函数,对付重复代码; 3)好处:复用机会大,容易理解(代替注释),容易覆写; 4)问题:局部变量的处理。 5)实用性:非常大,最好的重构方法。 重构方法——封装值域: 重构方法——搬移函数 : 重构方法——引入外加函数: 重构方法——合并重复的条件片断 : 重构方法——将查询函数和修改函数分离 : 重构方法——提炼模块 : 五、重构在现实开发中的推广和障碍 为什么开发者不愿意重构他们的程序? 新手不相信重构,老手不知道如何重构; 如果这些利益是长远才体现的,何必现在付出这些努力呢?说不定当项目收获这些利益时,你已经不在职位上了; 代码重构是一项额外工作,项目经理则是进度为第一驱动力; 重构可能破坏现有程序; 我想到的解决办法 重构系列培训,单板软件试点,组建重构小组; 重构同样可以短期受益,正如锻炼身体和饮食调控; 降低重构带来的额外开销,顶住项目压力
文档评论(0)