课程简介
就像修炼武学一般,编码的技能同样需要修行,只有掌握更多编码技能与设计技能的程序员才能在程序世界走得更远,攀得更高。掌握必备的设计技能,就好像是武者修行的洗髓炼气,决定了未来内力的强大;扎实的编码功底,则是修炼外功,打磨的是筋骨皮;至于开发工具、测试驱动、重构等诸多技能,则是编码武者掌握的招式,若能熟练掌握,就能一击制敌,让那些糟糕代码无容身之地。
故而,程序员能力的提升,就是编码武者的修行。
目标收益
培训对象
课程大纲
洗髓篇 设计心法 |
纵观软件开发的历史,其间经历了过程式设计、面向对象设计(函数式编程)、面向组件设计、面向服务设计,然而无论是以什么内容作为驱动设计的要素,都离不开设计的本原——“高内聚松耦合”。 这六字真言道尽了软件设计的终极目标:我们希望设计出来的实体(函数、类、模块、子系统)可以重用,支持扩展,如此才能提高编码效率、减少系统缺陷,同时还能面对需求的变化。 高内聚,意味着程序的职责分配合理,不会将相关的逻辑分散到各处,且又定义了合理的边界,只暴露需要进行协作的接口;于是又引入了松耦合,使得实体之间明断实连,相依而不相存,可以独立变化,却又相互协作。 在本章,我将从多个角度来阐释、剖析这六字真言: 高内聚松耦合 设计的起点 重复谜题 对象的合理封装 自治对象 1、高内聚松耦合 内聚性 耦合性 2、对象的合理封装 案例分析:报表系统之参数处理 3、继承与委派的区别 案例分析:两种分离方案的对比 4、多态与抽象设计的起点 5、重复谜题 5.1业务逻辑的重复 案例分析:日志系统的组合子设计 案例分析:业务系统的数据库访问与事务处理,采用两种不同方式对其进行重构,重构的结果是一个初步简略的框架。 5.2程序结构的重复 案例分析:对集合的操作,运用函数式编程思想消除重复。 |
易筋篇 整洁之道 |
武功修行,内外兼修才是王道。软件设计同样如此,不能只炼心法(设计),而缺少对身体(代码)的锤炼。二者(设计与代码)并非完全割裂的关系,而是相辅相成,甚至内外相通的关系。好的设计可以在一定程度上保证好的编码,而把握好整洁代码的特征,培养编码的Sense,则有助于改进设计的质量。 那么什么才是整洁代码呢?本章会对此展开探讨,以期端正编码者的态度,培养良好编码习惯,打磨编码技能。 简单设计 Kent Beck提出了“简单设计的概念”,内容为: 通过所有测试(Passes its tests) 尽可能消除重复 (Minimizes duplication) 尽可能清晰表达 (Maximizes clarity) 更少代码元素 (Has fewer elements) 以上四个原则的重要程度依次降低。 案例:结合简单设计理解邮件转发器的设计 |
负重修行 |
外功修炼就是要负重而行。在这条修行道路上,我们需要突破如下内容的桎梏: 名:提高可读性的一方面 形:提高可读性的一方面 函数:构成程序的最重要元素 1、可读性:命名\表达式\合理的分段\DSL 案例分析:若干代码片段,多数来自于真实项目的丑陋代码,演示如何提高这些代码的可读性,使得代码结构更加清晰。 2、整洁的函数 案例分析:Fitness代码分析 3、异常处理 案例分析:版本升级管理系统的异常处理 4、重构 案例实践: 影片租赁系统 分布式系统消息处理的测试 JBehave测试用例 |
综合思考 |
如何制定重构策略 Code Review 案例:我在客户处做的代码诊所 |
洗髓篇 设计心法 纵观软件开发的历史,其间经历了过程式设计、面向对象设计(函数式编程)、面向组件设计、面向服务设计,然而无论是以什么内容作为驱动设计的要素,都离不开设计的本原——“高内聚松耦合”。 这六字真言道尽了软件设计的终极目标:我们希望设计出来的实体(函数、类、模块、子系统)可以重用,支持扩展,如此才能提高编码效率、减少系统缺陷,同时还能面对需求的变化。 高内聚,意味着程序的职责分配合理,不会将相关的逻辑分散到各处,且又定义了合理的边界,只暴露需要进行协作的接口;于是又引入了松耦合,使得实体之间明断实连,相依而不相存,可以独立变化,却又相互协作。 在本章,我将从多个角度来阐释、剖析这六字真言: 高内聚松耦合 设计的起点 重复谜题 对象的合理封装 自治对象 1、高内聚松耦合 内聚性 耦合性 2、对象的合理封装 案例分析:报表系统之参数处理 3、继承与委派的区别 案例分析:两种分离方案的对比 4、多态与抽象设计的起点 5、重复谜题 5.1业务逻辑的重复 案例分析:日志系统的组合子设计 案例分析:业务系统的数据库访问与事务处理,采用两种不同方式对其进行重构,重构的结果是一个初步简略的框架。 5.2程序结构的重复 案例分析:对集合的操作,运用函数式编程思想消除重复。 |
易筋篇 整洁之道 武功修行,内外兼修才是王道。软件设计同样如此,不能只炼心法(设计),而缺少对身体(代码)的锤炼。二者(设计与代码)并非完全割裂的关系,而是相辅相成,甚至内外相通的关系。好的设计可以在一定程度上保证好的编码,而把握好整洁代码的特征,培养编码的Sense,则有助于改进设计的质量。 那么什么才是整洁代码呢?本章会对此展开探讨,以期端正编码者的态度,培养良好编码习惯,打磨编码技能。 简单设计 Kent Beck提出了“简单设计的概念”,内容为: 通过所有测试(Passes its tests) 尽可能消除重复 (Minimizes duplication) 尽可能清晰表达 (Maximizes clarity) 更少代码元素 (Has fewer elements) 以上四个原则的重要程度依次降低。 案例:结合简单设计理解邮件转发器的设计 |
负重修行 外功修炼就是要负重而行。在这条修行道路上,我们需要突破如下内容的桎梏: 名:提高可读性的一方面 形:提高可读性的一方面 函数:构成程序的最重要元素 1、可读性:命名\表达式\合理的分段\DSL 案例分析:若干代码片段,多数来自于真实项目的丑陋代码,演示如何提高这些代码的可读性,使得代码结构更加清晰。 2、整洁的函数 案例分析:Fitness代码分析 3、异常处理 案例分析:版本升级管理系统的异常处理 4、重构 案例实践: 影片租赁系统 分布式系统消息处理的测试 JBehave测试用例 |
综合思考 如何制定重构策略 Code Review 案例:我在客户处做的代码诊所 |