课程简介
「高级软件设计训练营」是一个理论与实践相结合的课程,阐述软件设计的基本原则、模式与实践的基本理论与实践应用,重点关注演进式设计的基本过程。
目标收益
a) 「高级软件设计训练营」倡导整洁代码的基本实践,重点关注程序设计语言的最佳实践、习惯用法及其实现模式的实践与应用;
b) 「高级软件设计训练营」不仅包含面向对象的设计思维,也倡导函数式的设计思维;重点关注抽象,组合等通用的软件设计技术。
培训对象
a) 具有1年及以上工作经验,并期望掌握面向对象,函数式,极限编程,DSL(领域描述语言),DDD(领域驱动设计)相关技术的的研发工程师,系统工程师,架构师。
课程大纲
第一单元: 软件设计综述 |
一、 理论部分 1. 阐述软件设计的基本目标、过程; 2. 阐述敏捷软件开发的基本理念和价值观; 3. 阐述极限编程的基本方法论; 4. 阐述演进式设计的基本理论与实践应用。 二、 实践部分 1. 探讨研发过程存在的痛点; 2. 探讨研发过程的改进方案。 |
第二单元 面向对象技术 |
一、 封装 1. 封装的意图; 2. 数据VS算法 3. Tell, Don’t Ask 4. 封装对设计的改善(示例) - Option 二、 继承与Mixin 1. 继承的种类 2. 单继承与多继承 3. 私有继承 4. Mixin机制 三、 多态 1. 多态的形态 2. 重载 3. 继承多态 4. 类型多态 四、 设计模式 1. 构造型 2. 结构型 3. 行为型 4. 反模式 5. 重构与模式 五、 实践面向对象 (FizzBuzzWhizz为例) 1. 实践需求挖掘的基本方法与技术; 2. 实践故事拆分的基本方法与技术; 3. 掌握TDD的基本能力; 4. 培养设计坏味道的基本嗅觉能力,及其重构的基本技术; 5. 培养设计整洁代码的习惯; 6. 培养简单设计的基本思维模式; |
第三单元: 整洁代码 |
一、 整洁代码的艺术 1. 整洁代码的思想流派 2. 童子军规 二、 命名 1. 名副其实 2. 常见命名模式 3. 反例 三、 函数 1. 单一职责:只做一件事,并将其做好 2. 同一抽象层次 3. 无副作用 4. DRY:不要重复自己 四、 注释 1. 糟糕的注释 2. 必要的注释 五、 格式 1. 缩进与排版 2. 风格 3. 模板 六、 对象 1. 信息隐藏 2. 迪米特法则 七、 异常 1. 异常VS错误码 2. 资源释放 八、 边界 1. 隔离和控制依赖 2. 适配器 3. 倒置依赖 九、 测试 1. 整洁的测试 2. TDD三定律 十、 类 1. SOLID 2. 上帝类 |
第四单元: 软件设计原则 |
一、 SOLID设计原则 1. SRP:单一职责 2. OCP:开放封闭 3. LSP:里氏替换 4. ISP:接口隔离 5. DIP:倒置依赖 二、 正交设计原则 1. 消除重复 2. 分离变化的原因 3. 缩小依赖范围 4. 向稳定的方向依赖 三、 简单设计原则 1. 通过测试 2. 没有重复 3. 揭示意图 4. 没有冗余 四、 总括 1. 局部性原则 2. 高内聚、低耦合 五、实战正交设计(以Hamcrest为例) |
第一单元: 软件设计综述 一、 理论部分 1. 阐述软件设计的基本目标、过程; 2. 阐述敏捷软件开发的基本理念和价值观; 3. 阐述极限编程的基本方法论; 4. 阐述演进式设计的基本理论与实践应用。 二、 实践部分 1. 探讨研发过程存在的痛点; 2. 探讨研发过程的改进方案。 |
第二单元 面向对象技术 一、 封装 1. 封装的意图; 2. 数据VS算法 3. Tell, Don’t Ask 4. 封装对设计的改善(示例) - Option 二、 继承与Mixin 1. 继承的种类 2. 单继承与多继承 3. 私有继承 4. Mixin机制 三、 多态 1. 多态的形态 2. 重载 3. 继承多态 4. 类型多态 四、 设计模式 1. 构造型 2. 结构型 3. 行为型 4. 反模式 5. 重构与模式 五、 实践面向对象 (FizzBuzzWhizz为例) 1. 实践需求挖掘的基本方法与技术; 2. 实践故事拆分的基本方法与技术; 3. 掌握TDD的基本能力; 4. 培养设计坏味道的基本嗅觉能力,及其重构的基本技术; 5. 培养设计整洁代码的习惯; 6. 培养简单设计的基本思维模式; |
第三单元: 整洁代码 一、 整洁代码的艺术 1. 整洁代码的思想流派 2. 童子军规 二、 命名 1. 名副其实 2. 常见命名模式 3. 反例 三、 函数 1. 单一职责:只做一件事,并将其做好 2. 同一抽象层次 3. 无副作用 4. DRY:不要重复自己 四、 注释 1. 糟糕的注释 2. 必要的注释 五、 格式 1. 缩进与排版 2. 风格 3. 模板 六、 对象 1. 信息隐藏 2. 迪米特法则 七、 异常 1. 异常VS错误码 2. 资源释放 八、 边界 1. 隔离和控制依赖 2. 适配器 3. 倒置依赖 九、 测试 1. 整洁的测试 2. TDD三定律 十、 类 1. SOLID 2. 上帝类 |
第四单元: 软件设计原则 一、 SOLID设计原则 1. SRP:单一职责 2. OCP:开放封闭 3. LSP:里氏替换 4. ISP:接口隔离 5. DIP:倒置依赖 二、 正交设计原则 1. 消除重复 2. 分离变化的原因 3. 缩小依赖范围 4. 向稳定的方向依赖 三、 简单设计原则 1. 通过测试 2. 没有重复 3. 揭示意图 4. 没有冗余 四、 总括 1. 局部性原则 2. 高内聚、低耦合 五、实战正交设计(以Hamcrest为例) |