《03重构卓越程序员修炼之道.docx》由会员分享,可在线阅读,更多相关《03重构卓越程序员修炼之道.docx(8页珍藏版)》请在第一文库网上搜索。
1、重构一卓越程序员修炼之道高级培训班软件质量,不但依赖与架构以及项目管理,而且与代码质量紧密相关.这一点,无论你使用什么开发技术,都不得不承认.什么是好的代码?可以工作的,性能良好,不出bug的代码,就是好的代码吗?世界大师Bob大叔认为,软件代码应该基本3个职责:第1职责:运行起来所实现的功能,这是代码得以存在的原因.第2职责:它要应对变化,因为几乎软件需求都有变化,因此代码应该保证将来的修改尽可能的简单.第3职责:要和阅读它的人进行沟通,对模块不熟悉的人员应该能够比较容易理解.因此所谓好的代码就是,除了满足所有功能需求以外,还应该更好的支持易修改和易扩展,同时应该清晰准确地传递作者的想法.因
2、此代码质量与整洁度成正比,干净的代码,即在质量上较为可靠,也为后期维护,升级奠定了良好的基础.该课程给出了一系列有效的重构实践,并且以来自现实项目的正,反两面的范例.只要遵循这些实践,就能编写出干净的代码,从而有效提升代码质量.这是实践我们为上百家软件公司提供咨询服务得到的结果,这也是软件公司难以大幅度提高生产力的关键所在。然而很多企业的技术高管都在抱怨自己的技术人员:1、编程序效率太差,一个简单的功能,很久时间才能完成开发实现;2、不动脑,经常犯很多弱智的错误;3、代码质量很差,程序结构不合理;4、写了78年程序仍然没有程序的味道,而且还养成了许多坏的编程习惯;5、基本功不扎实,学习了面向对
3、象和设计模式,根本不会使用;6、难于适应需求变更,每次增加新功能都是浪费大量时间。如何提高代码质量,提高程序员的生产力?为协助国内软件企业的程序员快速掌握以上技能,我们讲师,结合多年国内外项目开发的实战经验,帮助大家学以致用,消除“知与行”之间的鸿沟。现将相关事宜通知如下:一、培训特色本课程注重实战,采用案例贯穿方式完成实践,收集了大量的真实案例,针对项目过程中技术人员常犯的错误进行了汇总,研讨,并最终形成培训教程。本次培训从程序员的基本编程思维开始讲解,通过大量的真实案例,贯穿了设计、编码、重构、单元测试,持续集成等整个软件生命周期过程,详细地介绍了重构需要注意的要点以及难点,这些知识都是培
4、训师十几年编程经验的总结。二、培训对象各类IT/软件企业和研发机构的项目经理、软件设计师、程序员,质量部门员工。对于重构技术怀有疑问和困惑,需要梳理解答的团队和个人,效果最佳。最好你简单了解重构基本概念,该课程假设你已经知道重构,只是困惑如何在项目之中应用.三、学员基础学员学习本课程应具备下列基础知识:了解JaVa/C#或者C+任一语言,具有面向对象基本概念如果你不重视代码质量,最好不要参加.本课程面向重视代码质量的管理者.如果你已经多年不写代码,最好不要参加,本课程面向一线还在编程的程序员/设计师/架构师如果你不认为写好代码是一件重要,困难并且有趣的事情,请你不要参加.本课程面向追求完美的程
5、序员.五、培训要点本课程主要包含以下几个方面的内容:1、 结合电信、电力、税务和金融等多个项目案例进行分析。本次培训所用案例均为真实项目案例,仅供课堂学术讨论,不得以任何形式发表或传播,复制等。2、 重构技术:软件并不是在一开始就可以设计的完美无缺,因此必须经过不断的重构进行改善,重构是实现优秀设计的一种重要手段3、 代码坏味道:介绍常见的糟糕的代码坏味道,以告诫学员,今后如何避免出现这样的拙劣代码。这是21条代码基本要求,是代码管理的最低要求,可以接受的底线.4、 代码管理:项目管理者和质量管理部门,如何组织代码评审,代码审查,如果通过代码评审,提高设计能力。5、 重构到模式:模式的应用是一
6、个渐进演变的过程,坏味道也不是一开始就出现的.如果在一开始就想到用某某模式,有时很可能导致设计过度.重构与模式有一种天然的关系.重构是手段,模式是目的,同时模式也为重构指明了方向和原则.通过案例分析设计模式是如何演进/重构出来的6、 单元测试:介绍如何使用XUnit进行单元测试,如何更高效地撰写bug更少的代码;如何发现bug的藏身之处以及如何清除bug;如何测试代码片断而不用牵连整个项目;如何利用XUnit简化测试代码;如何在团队中高效地进行测试,设计具有更好易测性的软件等等。7、 代码质量度量:结合和完善1ogiscope和McCabe两种软件度量体系,选取出依据软件程序代码的可量化测量度
7、量元,并通过测试不同型号的软件确定出模型参数,建立质量度量评估模型,有助于软件的量化评价,为质量管理人员了解软件质量水平、软件设计师改进软件程序质量,提供量化的客观依据.8、 代码静态分析工具:介绍业界已经在大量使用代码静态分析工具,以便在编码阶段就能够找出可能的编码缺陷。比如Java语言环境下的findbugs,Checkst1ye,PMD,javancss等9、 持续集成:介绍持续集成基本基本原则和工具,它增加项目可见性、降低项目失败风险的有效实践.也介绍了测试驱动、代码审查、数据库集成、信息反馈等实践和工具。10、 架构重构:由于软件应对需求变化的能力越来越差,通过重构架构进行软件重建的
8、做法变得越来越有吸引力。如何进行架构重构,怎样重构等.六、培训内容时间授课内容第一单元重构概述和软件代码新视角内容一:软件代码的新思维一代码就是设计,代码质量决定软件可维护性1 .软件可维护性(为什么必须重视软件的可维护性)2 .代码质量概述3 .破窗效应4 .对代码的重新认识一代码就是设计5 .优秀代码的评价标准6 .好代码和糟糕代码之间的区别7 .劣质代码的代价8 .大师评价整洁代码的标准a) RobertCMartinb) KentBeckc) WardCunninghamd) RonJeffriese) GradyBoochf) DaveThomas内容二:重构思想1 .重构概述2 .
9、何时重构3 .如何发现哪些地方需要重构4 .如何保证重构的正确5 .如何测试重构6 .通过一个小案例演示重构的基本思想(什么时间重构,如何发现重构点,如何保证重构的正确性,最后如何验收)内容三:案例一通过实际项目演示重构1 .介绍项目需求情况,进行设计2 .阅读代码指出代码坏症状3 .通过重构逐步改善代码质量第二单元必知的21种代码坏味道如何发现重构点内容一,21种代码坏味道一代码的质量底线1 .代码坏味道概述2 .代码坏味道的分类3 .代码坏味道-低级篇(重复的代码、过长的函数、过大的类、过长的参数列表、发散式变化、分散的修改)4 .代码坏味道-中级篇(伪面向对象的调用、数据泥团、基本类型的
10、误用、SWitChYaSe结构的误用、平行继承体系、过薄的类、只有局部意义的成员变量)5 .代码坏味道一高级篇(过度耦合的消息链、过薄的中间对象、紧耦合类、相似的类、只有数据的类、滥用类的继承关系)6 .通过案例,让学员寻找代码坏味道7 .可以根据客户现在的项目作为案例进行现场分析,找出相应的代码坏味道内容二:某项目分析-重点了解现实项目代码的充斥大量坏味道1 .介绍项目需求情况,阅读现有代码指出代码坏症状2 .不看不知道,代码到底有多烂一触目惊心的代码3 .通过重构逐步改善代码质量4 .本案例学习多种重构方式第三单元重构技术一怎样对现有代码重构内容一:重构技术1 .重构名录2 .介绍72种常
11、见的重构技术3 .分别通过相关案例展示重构技术内容二:重构案例一该案例重点学习代码格式和命名1 .代码格式规范2 .代码命名-名副其实3 .很重要,但是总被忽略的基本功4 .通过案例介绍代码格式以及如何使用IDE工具进行定制格式5 .通过案例介绍代码的命名,以及如何重构内容三:重构案例一该案例重点函数和函数调用重构1 .函数的重构2 .函数调用重构3 .通过案例介绍函数的重构内容四:重构案例一该案例重点对象职责和对象重构1 .过程化思维和面向对象设计2 .对象的重新思考3 .职责驱动的对象设计4 .通过案例介绍如何重构面向过程代码到面向对象内容五:重构案例一该案例重点数据结构重构1 .数据结构
12、重构2 .通过案例介绍如何重构面向过程代码到面向对象内容六:重构案例一该案例重点复杂条件表达式重构1 .复杂条件表达式重构2 .IFZE1se语句的危害3 .SWitCh语句的危害4 .通过案例介绍如何重构面向过程代码到面向对象第四单元代码质量度量与代码静态分析工具-不能度量就无法考核,通过工具进行度量内容一:代码质量度量1. 代码质量的度量2. Chidamber&Kemerer度量,3. DepthofInheritanceTree(DIT)4. NumberofChi1dre(NOO5. ResponseforaC1ass(RFC)6. AfferentZEfferentCoup1ing
13、s(CA/CE)7. 1ackofcohesioninmethods(1COM)8. 业界其他度量标准9. 通过分析多个实际项目,分别度量相关是否标准内容二:代码评审1 .代码评审前期准备2 .代码评审的代码量3 .代码评审的检查表4 .代码评审的总结与学习5 .通过案例分析如何做好代码评审内容三:代码静态分析工具1. 代码静态分析工具概述2. CheckSty1e:用于编码标准3. PMD的CPD:帮助发现代码重复4. CoVediPSe:测量代码覆盖率5. JDepend:提供依赖项分析6 .Metric:有效地查出复杂度7 .其他语言相关代码静态分析工具8 .通过案例演示工具在项目之中的
14、应用第五单元重构工具与持续集成工欲善其事,必先利其器内容一:重构工具I.重构工具概述2 .使用IDE重构工具进行重构3 .重构工具的使用标准4 .重构工具的使用心得5 .通过案例演示如何通过重构工具完成重构内容二:持续集成1 .持续集成概述2 .持续集成的要点和原则3 .持续集成的准备工作4 .搭建持续集成环境5 .构建策略和最佳实践6 .构建结果通知机制7 .与问题追踪工具集成8 .持续集成对代码分析的支持9 .通过案例演示如何利用持续集成完成代码检查和代码分析第六单元重构到模式-重构设计,学习设计模式必由之路内容一:重构到模式1 .软件设计的基本原则2 .设计模式概述3 .设计模式的本质论
15、4 .设计模式如何适应变化和封装5 .重构到模式的思路6 .模式的演进之路内容二:案例一重点介绍重构基本类型依赖和对应模式1 .通过案例学习以下重构到模式手段2 .以State取代状态改变条件语句3 .以Strategy取代条件逻辑4 .以Composite取代隐含树5 .以Interpreter取代隐式语言6 .转移装饰功能到Decorator7 .用BUiIder封装Composite8 .重点学习案例的重构到模式的过程内容三:案例重点介绍重构代码重复和对应模式9 .通过案例学习以下重构到模式手段10 .构造Temp1ateMethodI1以ComPoSite取代一/多之分12 .引入NUnObjeCt13 .用AdaPter统一接口14 .用FatoryMethod引入多态创建15 .重点学习案例的重构到模式的过程内容四:案例重点介绍重构代码过长/过大的类彷法和对应模式1 .转移聚集操