• 搜素结果

 / 

代码整洁之道 ---软件高质量代码体系最佳实践(2天)

咨询公司
曾任职BEA(中国)资深软件架构师
6867
51279
3476
代码整洁之道 ---软件高质量代码体系最佳实践(2天)
推荐课程
暂无评分
推荐课程
暂无评分
¥

每人

课程时长

课程排期

如您想参加此课程,您可以点击“我想参加”按钮提交您的需求,我们会及时与您联系

地点: 该课程暂无排期
没有地点信息
将课程带入到您的团队,为您的团队进行一对一辅导。
预约内训

课程详细[html版]

课程信息

软件质量,不但依赖于架构,设计以及项目管理,而且与代码质量紧密相关.这一点,无论你使用什么开发技术,都不得不承认. 代码是程序员沟通最直接的手段,代码是技术交流的手段,代码是需求交流的途径。重视代码,回归本源,曾经我们远离代码,谈架构设计,谈UML,谈开发流程。如今我们落地,找回软件的本源,彻彻底底看清代码、深入思考代码。那些一流的研发中心非常重视代码,Facebook就有经典的Code wins arguments(代码赢得争论)。在Facebook 做 code review时间大约占50%,管理者对代码质量负有一定责任 。甚至代码质量高于一切:Facebook Code review是重点KPI考核的对象,实行连坐制,如果因为代码质量问题,那么产生的KPI责任包括领导30%、程序员50%、审核人员20%。

培训特色

我们必须有全面的管理制度让我们保持代码少而整洁。所以Michael Feathers认为"未来属于知道如何有策略地删除代码的公司”。持有代码的成本要比我们想象的大。意识到这一点的公司更具有竞争优势。
为了切实帮助软件企业降低企业项目开发成本,大面积提高软件工程师编程能力和代码质量管理能力,我们特别推出实战训练营. 分享多家大型研发中心代码管理经验给大家。

目标收益

该课程适应于各个阶段的技术人员.初级工程师能够透过大师的眼睛来看待编程,了解编程的价值观和原则;具有丰富经验的设计师和架构师可以通过实现模式进行反思,探究成功实践背后的意义.把价值观,原则和开发实践结合;管理者通过学习业界著名研发中心的管理经验和失败的教训,来制定自己公司的代码管理策略.质量管理相关人员学习如何定制代码质量指标,通过哪些工具进行监控,怎样管理代码质量。

培训对象

各类软件企业和研发中心的程序员、软件设计师、架构师, 项目经理,质量部门员工。

课程大纲

主题 内容

第一篇: 编程是一种态度-------价值观
第1单元 代码就是债务

内容一:代码是债务
1.代码的认识---代码就是债务
2.代码是债务,越少越好
3.你拥有的代码越多,添加新内容所要付出的成本就越高
4.通过案例分析让代码库尽可能小的方法:
5.通过国际研发中心电信计费系统演示代码是债务的思想,10多年国外研发团队设计与研发第一版本,目前几百人在维护
通过项目演示通过重构如何减少了一半的代码,维护的人员的减少

项目的失败可能归咎于各种各样的原因。一些项目因糟糕的需求而失败,另一些则由于钱和时间超支了,还有少数单纯是因为糟糕的管理所致。如果我们探究其根本原因,是否会发现所有项目失败的罪魁祸首是糟糕的代码呢?

Bob大叔坚信糟糕的代码所带来的成本之大足够让一个项目失败。

内容二 软件界要以新视角看待代码
1.传统的软件工程对代码的错误认识
2.代码的两面性,代码的静态结构和运行时行为
3.客户和管理者往往仅仅关注代码的运行时的行为
4.温伯格认为的主管必须关注代码
5.软件设计与代码的关系—真正好的设计是在编码阶段一步一步而形成的,通过案例分析,设计如何根据代码进行演化
6.编程真的是简单的劳动吗?
7.通过多家项目案例进行分析,传统思想对代码的种种误解,我们提出了从3种新的角度来观察代码,
a)从管理者的角度,我们仅仅观察代码的运行时行为,导致代码的静态结构混乱的根源。这就是代码的冰山原理,大量垃圾代码隐藏在冰山之下。
b)设计师的角度认为只要有好的设计,软件质量就可以保证。其实我们认为代码是真正唯一可以精确描述的设计文档。
c)程序员的视角,编程真的很难,通过某一个项目案例分析,20多人一周的工作量就为几行代码问题

第2单元编程价值观

内容一:编程价值观
1.编程的方法学
2.什么是好的代码,我们却认为“Good code is not bad code !”
3.编程价值观---沟通,简单,灵活
4.价值观决定行为
5.优秀代码的评价标准, 什么是高质量编码? 特征是什么?
6.软件代码的可读性
7.代码的可扩展性
8.糟糕代码的特征
9.劣质代码的代价
10.大师评价整洁代码的标准
11.通过大量项目案例分析,什么是好的代码,对好代码新的认识

第二篇: 编程是一种技艺-------实践篇
第3单元 高质量函数(该内容较多,根据实际情况调整)

内容一:高质量函数/过程
1.为什么需要函数
2.函数复杂度度量
3.函数圈复杂度以及度量
4.函数抽象层次-单一抽象层次原则SLAP(Single Level of Abstrction Principle)
5.函数实现模式之—组合函数(Composed Method)
6.万恶之源—函数过长
7.函数的单一职责
8.函数第一原则:是要短小,函数第二原则:是还要短小,函数第三原则:是必须短小
9.函数重构之道—抽取方法(Extract Method)和抽取对象函数
10.函数命名—怎样取好的函数名
11.通过大量项目代码分析,函数的遇到的各种问题,如何编程高质量函数

内容二:函数易理解与沟通
1.函数主体流
2.函数的异常处理
3.函数主题流程简化方法1-助手方法
4.助手方法的应用场景
5.助手方法的效果
6.函数主题流程简化方法2-函数对象(MethodObject)
7.通过真实项目代码进行分析,如果提高代码的可读性

内容三:函数灵活/易可扩展---函数接缝
1.历史遗留代码维护问题
2.某电信研发中心的维护问题—开发维护的效率问题。
3.增加一个功能特性的成本并不单单是为这些功能编码所花费时间的成本,还应该包括特性扩展的障碍成本。
4.代码的可维护成本分析—通过大量案例分析
a)确定需要修改哪些部分有多难
b)必要的改动有多少
c)实现改动对系统其他部分的影响有多大
5.如何实现代码的易扩展—函数接缝
6.接缝(seam),指程序中的一些特殊的点,在这些点上你无需做任何修改就可以达到改动程序行为的目的
7.通过案例分析,如何实现函数的灵活/易扩展。

内容四:利用多态解决复杂表达式
1.面向对象多态技术的新认识
2.减少使用if语句,重构到多态
3.以State/Strategy取代类型代码
4.引入Null Object
5.以Command替换条件调度程序
6.转移聚集操作到Visitor
7.转移装饰功能到Decorator
8.通过大量项目代码演示多态可以解决的编程问题


内容五:函数的错误处理和异常管理
1.函数的错误处理
2.使用异常而非返回码
3.依赖磁铁(Dependeny magent)
4.主体流-明确表达控制流的主体
5.异常流-尽可能清晰地表达异常控制流,而不干扰对主体流的表达
6.标准的异常处理9种方法
7.通过大量真实案例的代码进行分析函数的错误处理和异常处理

第三篇: 编程是一种习惯-------管理篇
第4单元 代码重构

内容一:代码重构
1.重构必然性
2.破窗效应与技术债务
3.实际重构遇到的4大问题
4.介绍常见的重构技术
5.重构到模式的目录
6.通过多个案例分析,重构面临的问题和解决之道

第5单元 修改遗留系统代码

内容一:修改遗留项目代码
1.必须修改遗留的代码起因
2.遗留代码修改危险事项
3.如何对依赖代码做测试
4.依赖代码的感知与分离
5.依赖代码修改的接缝技术
6.修改依赖代码的工具
7.降低风险的措施
8.接依赖技术
9.通过多个大型项目案例分析,如何修改遗留代码,分析如何解耦

内容二:拒绝退化-如何修改遗留系统,而不破坏现有系统结构
1.拒绝退化—“首先不要伤害”
2.Sprout Method
3.Sprout Class
4.Wrap Method
5.Wrap Method
6.通过案例分析,如何修改遗留代码,而不破坏现有系统代码结构

第6单元 代码质量体系最佳实践

内容一:代码质量管理4个现代化
1.代码管理的4个现代化
a)质量量化(如何设置质量指标)
b)工具化(如何寻找合适的工具
c)自动化(把流程自动化,忘记流程)
d)持续优化(反思与优化)
2.多家电信研发中心,如何实现4个代码现代化

内容二:代码静态分析工具
1.代码静态分析工具概述
2.以Java语言代码静态分析工具为例介绍,该内容的思想仍然适合其他语言
a)Sonar集成平台
b)CheckStyle:用于编码标准
c)PMD 的 CPD:帮助发现代码重复
d)Coverlipse:测量代码覆盖率
e)JDepend:提供依赖项分析
f)Metric:有效地查出复杂度
g)其他语言相关代码静态分析工具
3.通过案例演示工具在项目之中的应用

内容三:代码评审
代码结构分析、代码质量度量、代码覆盖率分析方法,代码审查的形式、技术、技巧和流程,在代码评审环节有效发现代码隐藏问题,代码评审具体方法和审核的具体内容,审核效果分析,代码评审工作的组织结构设计,组织内人员工作安排;
1.代码评审前期准备
2.代码评审的代码量
3.代码评审的检查表
4.代码评审的总结与学习

内容四:代码质量管理体系
1.结合国内多家研发中心的代码管理经验分享
2.代码质量体系的建立

第一篇: 编程是一种态度-------价值观
第1单元 代码就是债务

内容一:代码是债务
1.代码的认识---代码就是债务
2.代码是债务,越少越好
3.你拥有的代码越多,添加新内容所要付出的成本就越高
4.通过案例分析让代码库尽可能小的方法:
5.通过国际研发中心电信计费系统演示代码是债务的思想,10多年国外研发团队设计与研发第一版本,目前几百人在维护
通过项目演示通过重构如何减少了一半的代码,维护的人员的减少

项目的失败可能归咎于各种各样的原因。一些项目因糟糕的需求而失败,另一些则由于钱和时间超支了,还有少数单纯是因为糟糕的管理所致。如果我们探究其根本原因,是否会发现所有项目失败的罪魁祸首是糟糕的代码呢?

Bob大叔坚信糟糕的代码所带来的成本之大足够让一个项目失败。

内容二 软件界要以新视角看待代码
1.传统的软件工程对代码的错误认识
2.代码的两面性,代码的静态结构和运行时行为
3.客户和管理者往往仅仅关注代码的运行时的行为
4.温伯格认为的主管必须关注代码
5.软件设计与代码的关系—真正好的设计是在编码阶段一步一步而形成的,通过案例分析,设计如何根据代码进行演化
6.编程真的是简单的劳动吗?
7.通过多家项目案例进行分析,传统思想对代码的种种误解,我们提出了从3种新的角度来观察代码,
a)从管理者的角度,我们仅仅观察代码的运行时行为,导致代码的静态结构混乱的根源。这就是代码的冰山原理,大量垃圾代码隐藏在冰山之下。
b)设计师的角度认为只要有好的设计,软件质量就可以保证。其实我们认为代码是真正唯一可以精确描述的设计文档。
c)程序员的视角,编程真的很难,通过某一个项目案例分析,20多人一周的工作量就为几行代码问题

第2单元编程价值观

内容一:编程价值观
1.编程的方法学
2.什么是好的代码,我们却认为“Good code is not bad code !”
3.编程价值观---沟通,简单,灵活
4.价值观决定行为
5.优秀代码的评价标准, 什么是高质量编码? 特征是什么?
6.软件代码的可读性
7.代码的可扩展性
8.糟糕代码的特征
9.劣质代码的代价
10.大师评价整洁代码的标准
11.通过大量项目案例分析,什么是好的代码,对好代码新的认识

第二篇: 编程是一种技艺-------实践篇
第3单元 高质量函数(该内容较多,根据实际情况调整)

内容一:高质量函数/过程
1.为什么需要函数
2.函数复杂度度量
3.函数圈复杂度以及度量
4.函数抽象层次-单一抽象层次原则SLAP(Single Level of Abstrction Principle)
5.函数实现模式之—组合函数(Composed Method)
6.万恶之源—函数过长
7.函数的单一职责
8.函数第一原则:是要短小,函数第二原则:是还要短小,函数第三原则:是必须短小
9.函数重构之道—抽取方法(Extract Method)和抽取对象函数
10.函数命名—怎样取好的函数名
11.通过大量项目代码分析,函数的遇到的各种问题,如何编程高质量函数

内容二:函数易理解与沟通
1.函数主体流
2.函数的异常处理
3.函数主题流程简化方法1-助手方法
4.助手方法的应用场景
5.助手方法的效果
6.函数主题流程简化方法2-函数对象(MethodObject)
7.通过真实项目代码进行分析,如果提高代码的可读性

内容三:函数灵活/易可扩展---函数接缝
1.历史遗留代码维护问题
2.某电信研发中心的维护问题—开发维护的效率问题。
3.增加一个功能特性的成本并不单单是为这些功能编码所花费时间的成本,还应该包括特性扩展的障碍成本。
4.代码的可维护成本分析—通过大量案例分析
a)确定需要修改哪些部分有多难
b)必要的改动有多少
c)实现改动对系统其他部分的影响有多大
5.如何实现代码的易扩展—函数接缝
6.接缝(seam),指程序中的一些特殊的点,在这些点上你无需做任何修改就可以达到改动程序行为的目的
7.通过案例分析,如何实现函数的灵活/易扩展。

内容四:利用多态解决复杂表达式
1.面向对象多态技术的新认识
2.减少使用if语句,重构到多态
3.以State/Strategy取代类型代码
4.引入Null Object
5.以Command替换条件调度程序
6.转移聚集操作到Visitor
7.转移装饰功能到Decorator
8.通过大量项目代码演示多态可以解决的编程问题


内容五:函数的错误处理和异常管理
1.函数的错误处理
2.使用异常而非返回码
3.依赖磁铁(Dependeny magent)
4.主体流-明确表达控制流的主体
5.异常流-尽可能清晰地表达异常控制流,而不干扰对主体流的表达
6.标准的异常处理9种方法
7.通过大量真实案例的代码进行分析函数的错误处理和异常处理

第三篇: 编程是一种习惯-------管理篇
第4单元 代码重构

内容一:代码重构
1.重构必然性
2.破窗效应与技术债务
3.实际重构遇到的4大问题
4.介绍常见的重构技术
5.重构到模式的目录
6.通过多个案例分析,重构面临的问题和解决之道

第5单元 修改遗留系统代码

内容一:修改遗留项目代码
1.必须修改遗留的代码起因
2.遗留代码修改危险事项
3.如何对依赖代码做测试
4.依赖代码的感知与分离
5.依赖代码修改的接缝技术
6.修改依赖代码的工具
7.降低风险的措施
8.接依赖技术
9.通过多个大型项目案例分析,如何修改遗留代码,分析如何解耦

内容二:拒绝退化-如何修改遗留系统,而不破坏现有系统结构
1.拒绝退化—“首先不要伤害”
2.Sprout Method
3.Sprout Class
4.Wrap Method
5.Wrap Method
6.通过案例分析,如何修改遗留代码,而不破坏现有系统代码结构

第6单元 代码质量体系最佳实践

内容一:代码质量管理4个现代化
1.代码管理的4个现代化
a)质量量化(如何设置质量指标)
b)工具化(如何寻找合适的工具
c)自动化(把流程自动化,忘记流程)
d)持续优化(反思与优化)
2.多家电信研发中心,如何实现4个代码现代化

内容二:代码静态分析工具
1.代码静态分析工具概述
2.以Java语言代码静态分析工具为例介绍,该内容的思想仍然适合其他语言
a)Sonar集成平台
b)CheckStyle:用于编码标准
c)PMD 的 CPD:帮助发现代码重复
d)Coverlipse:测量代码覆盖率
e)JDepend:提供依赖项分析
f)Metric:有效地查出复杂度
g)其他语言相关代码静态分析工具
3.通过案例演示工具在项目之中的应用

内容三:代码评审
代码结构分析、代码质量度量、代码覆盖率分析方法,代码审查的形式、技术、技巧和流程,在代码评审环节有效发现代码隐藏问题,代码评审具体方法和审核的具体内容,审核效果分析,代码评审工作的组织结构设计,组织内人员工作安排;
1.代码评审前期准备
2.代码评审的代码量
3.代码评审的检查表
4.代码评审的总结与学习

内容四:代码质量管理体系
1.结合国内多家研发中心的代码管理经验分享
2.代码质量体系的建立

+加载更多
Donec quam felis

Thousand unknown plants are noticed by me: when I hear the buzz of the little world among the stalks, and grow familiar with the countless indescribable forms of the insects and flies, then I feel the presence of the Almighty, who formed us in his own image, and the breath

I am alone, and feel the charm of existence in this spot, which was created for the bliss of souls like mine. I am so happy, my dear friend, so absorbed in the exquisite sense of mere tranquil existence, that I neglect my talents. I should be incapable of drawing a single stroke at the present moment; and yet.

+加载更多

近期公开课推荐

28
七月
广东
自动化运维

以介绍方向为主、学习互联网思想、从案例中…

28
七月
上海
Python自动化运维:技术与最佳实践

围绕Python自动化运维这个主题,详细介绍系统…

28
七月
上海
微服务架构设计与实践

课程涵盖了互联网架构中设计到的方方面面,…

28
七月
北京
互联网高可用架构设计与实践

互联网架构师应对如今的高并发要具备哪些能…

课程反馈

当前课程还没有反馈信息

用户还看了其他课程

Swift语言课程

Swift语言课程

11807人看过
0人评价
企业信息安全技术管理

企业信息安全技术管理

28889人看过
0人评价

欢迎来到msup!

还不是msup会员?快来注册吧!

立即注册

服务热线

400-812-8020

market@msup.com.cn

官方微信公众号

微信公众号:msupclub

Copyright © 2017 msup

京ICP备09001521号