课程简介
本课程首先深入剖析软件质量下降的根源,提出重构是软件变更中保持高质量的必然,讲解如何运用“两顶帽子”的方式应对变更,拒绝腐化。接着,用真实案例讲解已经代码腐化的遗留系统是如何通过“软件重构七步曲”,由简入深、循序渐进地重构一个大系统。演练在整个过程中,如何通过AI编程,更加快速而高效地优化代码、软件重构、建立自动化测试,保持代码整洁。
目标收益
培训对象
课程大纲
第一单元 剖析软件退化的根源 |
软件开发的轮回: 1. 起初客户提出的需求并不复杂 2. 随着日后的变更,系统开始变得越来越复杂 3. 激烈的市场要求快速交付 4. 越来越复杂的系统交付速度会越来越慢 5. 越来越快的技术发展要求技术架构不断更迭 带来的问题: 1. 系统交付速度越来越慢而不能适应市场变化 2. 技术架构不断更迭越来越困难而不能适应技术发展 3. 测试变得越来越困难而任务繁重 4. 软件系统越来越笨重而不适应未来变化 分析与反思 探讨软件退化的根源 案例分析:演示电商网站付款功能代码质量下降的过程 1. 起初的设计 2. 随后的变更 3. 质量不断下降的过程 软件质量下降的根源: 1. 软件总是因变更而变得越来越复杂 2. 软件结构已经不再适应复杂的软件需求 3. 必须要调整软件结构以适应新的软件需求 4. 重构是保持高质量软件设计的习惯 两顶帽子的设计方式 软件是因需求变更而质量下降吗? 案例分析:推演软件变更的设计过程 应对软件变更的最佳方式:两顶帽子 1. 重构原有代码以适应新的需求 2. 实现新的需求 案例:演示两顶帽子的设计过程 |
第二单元 高质量的软件设计 |
准确理解高质量代码 1. 剖析高质量代码设计的本质 2. 软件的质量保证:内部质量与外部质量 3. 高质量软件设计的标准:易于阅读、易于维护、易于变更 准确理解代码整洁之道 1. 什么时候应该代码整洁 2. 函数代码整洁应当遵循的原则 3. 类与接口代码整洁应当遵循的原则 4. 注释代码的整洁之道 5. 异常处理的代码整洁之道 案例:实战项目的整洁代码展示 案例分析软件设计原则及其本质 1. 低耦合 1) 依赖反转原则(DIP) 案例:购票业务类与数据访问类 2) 开放-封闭原则(OCP) 案例:需求变更与可扩展点设计 案例:Square/Circle的解决方案 2. 高内聚 1) 单一职责原则(SRP) 案例:财务凭证变更带来的问题 案例:超级大函数与大对象的难题 案例:MySQL读写分离的改造过程 2) 不要重复自己原则(DRY) 典型的代码重复案例与散弹式修改 探讨代码复用的设计难题与软件重构 案例讲解:代码复用的常用方法 基于AI编程的DDD落地实践 1.国产智能大模型DeepSeek的13个应用场景: 代码改写、代码解释、代码生成、中英文翻译,等等 2.智能大模型核心应用的精华: 提示词工程、文档上传、搭建本地知识库 3.AI自动化编程带来的挑战: 1)不能交给AI过于复杂的任务 2)AI编写的代码如何规范编程,基于某个平台进行编程 3)AI编写的代码,日后如何变更维护 解决方案:以DDD作为规范指导AI编程 1.通过知识库制定AI软件开发的模板与规范: 1)文档模板:架构设计的模板、用例模型的模板、领域模型的模板 2)开发规范:领域对象、服务接口、DSL配置、测试用例的开发规范 2.基于知识库进行的AI软件开发: 1)基于业务需求进行分析设计 2)将大任务拆分成无数个小任务 3)基于知识库的规范进行AI编程 4)基于知识库的规范AI编写测试用例 |
第三单元 基于AI的软件重构 |
软件重构的概念与设计思想 1. 重构是一系列代码的等量变换 案例:一个Hello World重构过程 2. 重构的保险索:自动化测试 案例:Hello World的自动化测试过程 3. 软件修改的四种动机——重构的价值 4. 一个真实的谎言——重构的误区 5. 重构的主要方法与技巧 重构是高质量编码的实现方式 1. 重构是代码整洁与高质量编码的实现方式 1) 准确理解软件重构 2) 每次变更的时候,先重构再实现需求 3) 每过一段时间就通过重构整理一次代码 2. 基于AI的软件重构思路 1)用AI进行原始代码的理解 2)用AI进行代码的改写与优化 3)用AI编写测试用例 3. 案例:演练Hello World的维护变更过程 1) 最初的软件设计 2) 第一次变更:抽取方法与抽取类 3) 第二次变更:抽取接口与系统分层 4)重构完成以后,用测试用例进行验证 演练一个完整的重构过程 案例分析:重构一个大型遗留系统 1.重构第一步:分解大函数 超级大函数及其危害 案例:演示大函数产生的过程 案例:演示抽取方法操作步骤 实践抽取方法会遇到的问题和解决方案 演练AI编程在抽取方法中的应用 2.重构第二步:拆分大对象 超级大对象及其危害 案例:演示超级大对象的产生过程 案例:演示抽取类的操作步骤 讲解单一职责设计原则 案例:演示“分久必合,合久必分”的重构过程 演练AI编程在抽取类中的应用 3.重构第三步:提高复用率 讲解顺序编程及其危害 “不要重复代码”原则 案例:提高代码复用的6个方法 案例:演示新增代码时的代码复用过程 用静态检查工具检查重复代码 4.重构第四步:可扩展设计 过度设计 vs. 恰如其分的设计 讲解“开放-封闭”的设计原则 案例:讲解可扩展设计的4个方法 案例:讲解新增代码的可扩展设计过程 5.重构第五步:降低耦合度 案例:讲解接口、实现与工厂模式 案例:讲解外部接口解耦与适配器模式 演练用AI编程进行设计模式的设计 6.重构第六步:系统分层 反思软件架构需要怎样的分层结构 遗留系统如何拥抱需求变化 遗留系统如何应对技术变革 7.重构第七步:领域驱动设计 领域驱动设计的概念 讲解领域模型分析方法 演练一个完整的AI开发过程 1.通过知识库制定AI软件开发的模板与规范: 1)文档模板:架构设计的模板、用例模型的模板、领域模型的模板 2)开发规范:领域对象、服务接口、DSL配置、测试用例的开发规范 2.基于知识库进行的AI软件开发: 1)AI辅助的软件需求探索与编写需求文档 2)AI辅助编写用例模型 3)AI辅助编写领域模型 4)AI辅助形成数据库设计,编写SQL脚本 5)AI辅助编写领域对象与服务接口代码,进行DSL配置 6)AI辅助,基于某个平台进行业务代码的编写 7)AI辅助创建测试用例代码 |
第四单元 关于重构的深度讨论 |
什么时候重构 1. 重构是一种习惯 2. 重构让程序可读 3. 重构,才好复用 4. 先重构,再扩展 5. 紧急任务时的重构 自动化测试的困境 1. 重构初期的困局 2. 解耦与自动化测试 3. 建立自动化测试体系 4. 通过AI建立自动化测试体系 关于重构效果的评价 1. 评价软件质量的指标 2. 评价软件质量的工具 |
第一单元 剖析软件退化的根源 软件开发的轮回: 1. 起初客户提出的需求并不复杂 2. 随着日后的变更,系统开始变得越来越复杂 3. 激烈的市场要求快速交付 4. 越来越复杂的系统交付速度会越来越慢 5. 越来越快的技术发展要求技术架构不断更迭 带来的问题: 1. 系统交付速度越来越慢而不能适应市场变化 2. 技术架构不断更迭越来越困难而不能适应技术发展 3. 测试变得越来越困难而任务繁重 4. 软件系统越来越笨重而不适应未来变化 分析与反思 探讨软件退化的根源 案例分析:演示电商网站付款功能代码质量下降的过程 1. 起初的设计 2. 随后的变更 3. 质量不断下降的过程 软件质量下降的根源: 1. 软件总是因变更而变得越来越复杂 2. 软件结构已经不再适应复杂的软件需求 3. 必须要调整软件结构以适应新的软件需求 4. 重构是保持高质量软件设计的习惯 两顶帽子的设计方式 软件是因需求变更而质量下降吗? 案例分析:推演软件变更的设计过程 应对软件变更的最佳方式:两顶帽子 1. 重构原有代码以适应新的需求 2. 实现新的需求 案例:演示两顶帽子的设计过程 |
第二单元 高质量的软件设计 准确理解高质量代码 1. 剖析高质量代码设计的本质 2. 软件的质量保证:内部质量与外部质量 3. 高质量软件设计的标准:易于阅读、易于维护、易于变更 准确理解代码整洁之道 1. 什么时候应该代码整洁 2. 函数代码整洁应当遵循的原则 3. 类与接口代码整洁应当遵循的原则 4. 注释代码的整洁之道 5. 异常处理的代码整洁之道 案例:实战项目的整洁代码展示 案例分析软件设计原则及其本质 1. 低耦合 1) 依赖反转原则(DIP) 案例:购票业务类与数据访问类 2) 开放-封闭原则(OCP) 案例:需求变更与可扩展点设计 案例:Square/Circle的解决方案 2. 高内聚 1) 单一职责原则(SRP) 案例:财务凭证变更带来的问题 案例:超级大函数与大对象的难题 案例:MySQL读写分离的改造过程 2) 不要重复自己原则(DRY) 典型的代码重复案例与散弹式修改 探讨代码复用的设计难题与软件重构 案例讲解:代码复用的常用方法 基于AI编程的DDD落地实践 1.国产智能大模型DeepSeek的13个应用场景: 代码改写、代码解释、代码生成、中英文翻译,等等 2.智能大模型核心应用的精华: 提示词工程、文档上传、搭建本地知识库 3.AI自动化编程带来的挑战: 1)不能交给AI过于复杂的任务 2)AI编写的代码如何规范编程,基于某个平台进行编程 3)AI编写的代码,日后如何变更维护 解决方案:以DDD作为规范指导AI编程 1.通过知识库制定AI软件开发的模板与规范: 1)文档模板:架构设计的模板、用例模型的模板、领域模型的模板 2)开发规范:领域对象、服务接口、DSL配置、测试用例的开发规范 2.基于知识库进行的AI软件开发: 1)基于业务需求进行分析设计 2)将大任务拆分成无数个小任务 3)基于知识库的规范进行AI编程 4)基于知识库的规范AI编写测试用例 |
第三单元 基于AI的软件重构 软件重构的概念与设计思想 1. 重构是一系列代码的等量变换 案例:一个Hello World重构过程 2. 重构的保险索:自动化测试 案例:Hello World的自动化测试过程 3. 软件修改的四种动机——重构的价值 4. 一个真实的谎言——重构的误区 5. 重构的主要方法与技巧 重构是高质量编码的实现方式 1. 重构是代码整洁与高质量编码的实现方式 1) 准确理解软件重构 2) 每次变更的时候,先重构再实现需求 3) 每过一段时间就通过重构整理一次代码 2. 基于AI的软件重构思路 1)用AI进行原始代码的理解 2)用AI进行代码的改写与优化 3)用AI编写测试用例 3. 案例:演练Hello World的维护变更过程 1) 最初的软件设计 2) 第一次变更:抽取方法与抽取类 3) 第二次变更:抽取接口与系统分层 4)重构完成以后,用测试用例进行验证 演练一个完整的重构过程 案例分析:重构一个大型遗留系统 1.重构第一步:分解大函数 超级大函数及其危害 案例:演示大函数产生的过程 案例:演示抽取方法操作步骤 实践抽取方法会遇到的问题和解决方案 演练AI编程在抽取方法中的应用 2.重构第二步:拆分大对象 超级大对象及其危害 案例:演示超级大对象的产生过程 案例:演示抽取类的操作步骤 讲解单一职责设计原则 案例:演示“分久必合,合久必分”的重构过程 演练AI编程在抽取类中的应用 3.重构第三步:提高复用率 讲解顺序编程及其危害 “不要重复代码”原则 案例:提高代码复用的6个方法 案例:演示新增代码时的代码复用过程 用静态检查工具检查重复代码 4.重构第四步:可扩展设计 过度设计 vs. 恰如其分的设计 讲解“开放-封闭”的设计原则 案例:讲解可扩展设计的4个方法 案例:讲解新增代码的可扩展设计过程 5.重构第五步:降低耦合度 案例:讲解接口、实现与工厂模式 案例:讲解外部接口解耦与适配器模式 演练用AI编程进行设计模式的设计 6.重构第六步:系统分层 反思软件架构需要怎样的分层结构 遗留系统如何拥抱需求变化 遗留系统如何应对技术变革 7.重构第七步:领域驱动设计 领域驱动设计的概念 讲解领域模型分析方法 演练一个完整的AI开发过程 1.通过知识库制定AI软件开发的模板与规范: 1)文档模板:架构设计的模板、用例模型的模板、领域模型的模板 2)开发规范:领域对象、服务接口、DSL配置、测试用例的开发规范 2.基于知识库进行的AI软件开发: 1)AI辅助的软件需求探索与编写需求文档 2)AI辅助编写用例模型 3)AI辅助编写领域模型 4)AI辅助形成数据库设计,编写SQL脚本 5)AI辅助编写领域对象与服务接口代码,进行DSL配置 6)AI辅助,基于某个平台进行业务代码的编写 7)AI辅助创建测试用例代码 |
第四单元 关于重构的深度讨论 什么时候重构 1. 重构是一种习惯 2. 重构让程序可读 3. 重构,才好复用 4. 先重构,再扩展 5. 紧急任务时的重构 自动化测试的困境 1. 重构初期的困局 2. 解耦与自动化测试 3. 建立自动化测试体系 4. 通过AI建立自动化测试体系 关于重构效果的评价 1. 评价软件质量的指标 2. 评价软件质量的工具 |