4006-998-758
3000+课程任你选择
高质量代码体系
研发学院 里氏替换原则 开放封闭原则 前端代码 SRP
戴昊

现任创业AI公司研发技术总监负责带领团队研发计算机视觉、AI安防及大数据相关产品。15年+ 大型软件产品架构经验。曾为日本第一,世界第二的瑞穗银行(Mizuho Bank);世界第二大证券交易所 – 东京证券,五十铃汽车开发企业级系统。曾给深圳证券交易所,深圳证券,招商银行信用卡中心,平安金融,中国电信,DELL 讲授过企业级架构及重构与模式的课程。擅长企业级系统架构,领域驱动设计,重构与模式。


查看老师详情
课程内容

Day1


一、 代码与设计

1. NASA告诉我们为什么要关注代码

2. 设计与实现之间的鸿沟

3. 我们应该更加关注哪一个软件质量特性

4. 高内聚低耦合的招式与心法 -SOLID原则

5. 介绍贯穿整个课程的样例项目:次时代租车服务终端 (ARCS)


二、 单一职责原则

1. 次时代租车服务终端 (ARCS)的初步设计

2. 用例 (UseCase) 的作用 – 划分边界及概览

3. SRP的设计误区

4. 重构至 SRP 的方法1:提取类

5. 重构至 SRP 的方法2:Proxy模式

6. 前端代码 SRP重构:投票组件

7. 过程性代码的 SRP

8. 违反直觉的真相:性能优化的步骤


三、 代码可读性重构1:重命名

1. 软件生命各周期的成本

2. 好代码 与 坏代码

3. 识别典型坏代码的味道 – 警惕破窗效应

4. 扫雷代码的秘密 – 让名字承载更多信息

5. 典型的会令人误解的命名

6. 实战:SNS投票插件设计


四、 开放封闭原则

1. 代码中的接线板是什么?

2. 编程价值观– 沟通,简单,灵活

3. 如何做到对扩展开放,对修改封闭

4. 次时代租车服务终端 (ARCS)的促销需求

5. 笨拙的促销实现

6. 如何不修改代码而改变它的行为

7. 最简单的 OCP实现 – 策略模式

8. 前端代码重构:拆分复杂表达式

9. 敏捷开发的精髓 – 只被第一颗子弹击中


五、 程序员的自我修养 (代码的读,写,改)

1. 读代码的正确姿势

2. 报纸和代码,这两个东西怎么可能一样

3. 程序员还能不能通过代码好好的聊天了

4. 代码表面层次的改进

5. 需不需要写注释

6. 案例实战与剖析


六、 重构至模式训练营1 – 用 Strategy替换条件逻辑

1. 核心重构方法:以多态取代条件表达式

2. 实战:遗留代码重构 -银行贷款计算模块

3. 关键重构方法:MoveMethod,IntroduceParameter, ExtractParameter, ReplaceConditionalwithPolymorphism


七、 里氏替换原则

1. 什么才是好的继承关系

2. 子类为什么要能透明的替换基类

3. 次时代租车服务终端 (ARCS)的新需求 – 电动轿车费用计算

4. 白盒复用 还是 黑盒复用

5. IS-A的精髓:针对属性还是针对行为

6. 契约式设计继承体系

7. 重构方法:提升为兄弟类

8. 前端代码重构:抽取函数

9. 如何才能让 次时代租车服务终端 (ARCS)的代码符合 LSP

10. 这样做我们可能会引入什么新的问题?


八、 降低代码复杂度的技巧

1. 如何优化判断与循环

2. 卫语句与代码嵌套消除

3. NullReference与 代码复杂度

4. 圈复杂度的计算方法

5. 降低嵌套的另一方法:空对象模式

Day2


九、 重构至模式训练营2 – 用 State 替换状态改变条件语句

1. 如何设计电梯按钮的后台逻辑

2. 该从什么角度考虑问题:行为还是对象

3. 实战:遗留代码重构 – 权限判断模块

4. 关键重构方法:ReplaceCodewithClass, ExtractSub-Class,MoveMethod,EncapsulateField


1. 接口隔离原则

2. 接口“变胖”的问题 – 接口污染

3. 佳能一体机的遗留接口问题

4. 如何实现接口分离 – 适配器模式

5. 类适配器 – 多继承

6. 对象适配器 – 委托

7. 使用单元测试来发现问题

8. 前端代码重构:使用模板方法重新组织逻辑

9. 次时代租车服务终端 (ARCS)在接口划分上的问题

10. 如何简化复杂的逻辑

11. 如何使用模板方法分离抽象与具体

12. 案例:ATM机接口设计的演化


十、 依赖倒置原则

1. 结构化设计理念的问题

2. 对象化设计理念

3. 依赖倒置到底倒置了什么

4. 如何分离关注点

5. DI-依赖注入解决的问题:讲对象的创建与使用分离

6. 案例:消息队列设计的演化


十一、 重构至模式训练营3 – 用 Command 替换条件调度

1. 如何设计针对谓词的服务端

2. RESTful API 处理程序的整体结构

3. 实战:遗留代码重构 – 调度模块重构

4. 关键重构方法:ExtractMethod,ExtractClass, ExtractSuper-Class


十二、 高阶程序员必会招式– 单元测试的重构

1. 单元测试代码的三部曲

2. 如何让单元测试代码更具有可扩展性

3. 最核心的问题:我们到底要测什么

4. 单元测试代码也要遵循 SRP原则

5. 不要使用 Ctrl+C&Ctrl+V写单元测试


课程特点

课程通过丰富的案例以及简单易记的代码准则,来帮助开发人员培养工匠意识,提升代码质量与设计内功,进而帮助软件企业降低软件开发和维护的成本。


返回上一级