课程简介
本课程为学员们进行深入的软件设计能力学习和提升,设计了从C++项目实践中的常见易错问题、C++整洁代码的技巧、面向对象设计、C++设计模式、C++重构及架构设计。
在C++项目实践的内容中,本课程准备了大量的实际案例,从C++语法、语义、常见陷阱等分析,带领学员掌握正确和优质的写法。
目标收益
培训对象
课程大纲
第一单元 什么是优秀设计——函数及类设计要点 |
内容一:什么是好的代码 1.什么是好的软件详细设计和衡量的手段 2.世界大师的观点(Robert C Martin , Peter Code等) 3.可扩展性(Extensibility)容易添加新的功能 4.灵活性(Flexibility)代码修改平稳地发生. 5.可插入性(Pluggability)结合案例,通过那些手段如何实现该目标 6.案例分析,剖析某不佳代码,给出改进方案 内容二:函数设计及编写要点 1.函数中的坏味道(平均长度、标识参数等) 2.高扇入与低扇出 3.函数设计的注意点,参数、标识参数及自解释 4.重复代码处理策略 5.指令与查询分离 6.Switch-case、try-catch结构 7.案例分析及练习 内容三:类的设计及编码原则运用 1.类中耦合度的分析和策略 2.用多态提高系统的可扩展性 3.用间接类增强系统灵活性 4.用控制类处理复杂逻辑 5.用适配器类避免条件分支 6.类的开封原则(OCP)、单一职责原则(SRP)及LSP原则 7.案例分析 |
第二单元 软件设计模式与软件设计思想 |
内容一:常见的设计模式及其运用 1.使用GOF设计模式,借鉴前人的经验。 2.分析创建型模式:单例模式(Singleton)、工厂模式、抽象工厂模式(Abstractfactory) 3.分析结构型模式:桥梁模式(Bridge)、装饰模式(Decorator)、适配器模式(Adapter)、代理模式(Proxy)、组合模式(Composite) 4.分析行为型模式:命令模式(Command )、观察者模式(Observer)、状态模式(State)、策略模式(Strategy)、模板方法模式(Template Method)、访问者模式(Template Method) 内容二:常见的设计模式及软件原则案例分析 1.某游戏软件设计 2.某管理软件设计 |
第三单元 领域驱动及系统实践 |
内容一:业务逻辑层中的子层设计 1.信息专家原则在重构的运用 2.使用类的封装特征实现数据和函数隐藏 3.业务逻辑层组件设计 4.领域驱动设计的思想及其在类编码中的实践 5.业务服务、façade、实体、值对象、领域对象 6.充血模型、贫血模型、失血模型在编码中的分析 内容二:系统接口设计 1.内存接口及网络接口要点 2.依赖倒置原则 3.接口隔离原则 内容三:IOC原理及其在编码中的应用 1.理解IOC的本质 2.服务组件及能组件的设计 3.灵活使用IOC达成可扩展的代码体系 案例分析及练习——通用数据处理系统设计及实现 内容四、 典型案例分析 1.订餐系统 2.某设备系统设计 |
第四单元 识别代码中的坏味道及重构实践 |
内容一:重构初步:识别编码中的坏味道 1.重复的代码 2.过大的类及过长的函数 3.耦合:依恋情结、数据泥团及过度耦合的消息链 4.分散的逻辑:发散的变化及霰弹式的修改 5.复杂的逻辑:switch现象及平行继承体系 6.其它:中间人、数据类、不佳的继承 内容二:重构实践:面向对象及领域驱动 1.将过程化设计转化为对象设计,并讨论过程化设计与对象化设计的特点及历史博弈;并给出过程式设计及及对象设计的模式——合适的就是好的! 2.封装值域/自封装值域的重构 3.以数据类取代记录的策略 4.以对象取代数组的策略 5.以类取代型别码——Replace Type Code with Class 6.以子类取代型别码——Replace Type Code with Subclasses 7.以值域取代子类——Replace Subclass with Fields 8.建模为属性与建模为对象——系统建模中的微妙变化 9.Data Class——纯粹的数据类 10.以State/Strategy取代型别码 11.通过案例介绍函数的重构 内容三:重构实践—复杂条件表达式重构 1.常见问题,如何处理让人疯狂的复杂分类? 2.以多态取代条件式——Replace Conditional with Polymorphism 3.提炼继承体系——Extract Hierarchy 4.塑造模板函数——Form Template Method 5.以委托取代继承——Replace Inheritance with Delegation 6.以继承取代委托——Replace Delegation with Inheritance 7.用Strategy替换条件逻辑 8.用Bridge组合动态变化 9.用State替换状态改变条件语句 10.用Composite替换隐含树 11.用Command替换条件调度程序 12.在多态体系中,如何处理子条件不一致的情况——继承体系中的高级技巧。 内容四:重构实践—去除“大泥球”式的设计 1.过大的函数、模块、子系统 2.依恋情结、数据泥团 3.从系统设计的角度分析混乱产生的原因 4.通过案例介绍如何分解系统 内容五:重构实践—职责单一 1.一个模块完成一个职责——子模块位于同一个抽象层次 2.功能函数与逻辑函数的分离 3.Divergent Change——发散的变化 4.Shotgun Surgery——散弹枪式的修改 |
第五单元平台重构实践 |
内容一:某系统重构分析 1.底层服务抽取分析 2.分析子系统并对其定位 3.重构对现有系统的冲击及避免方式 |
第一单元 什么是优秀设计——函数及类设计要点 内容一:什么是好的代码 1.什么是好的软件详细设计和衡量的手段 2.世界大师的观点(Robert C Martin , Peter Code等) 3.可扩展性(Extensibility)容易添加新的功能 4.灵活性(Flexibility)代码修改平稳地发生. 5.可插入性(Pluggability)结合案例,通过那些手段如何实现该目标 6.案例分析,剖析某不佳代码,给出改进方案 内容二:函数设计及编写要点 1.函数中的坏味道(平均长度、标识参数等) 2.高扇入与低扇出 3.函数设计的注意点,参数、标识参数及自解释 4.重复代码处理策略 5.指令与查询分离 6.Switch-case、try-catch结构 7.案例分析及练习 内容三:类的设计及编码原则运用 1.类中耦合度的分析和策略 2.用多态提高系统的可扩展性 3.用间接类增强系统灵活性 4.用控制类处理复杂逻辑 5.用适配器类避免条件分支 6.类的开封原则(OCP)、单一职责原则(SRP)及LSP原则 7.案例分析 |
第二单元 软件设计模式与软件设计思想 内容一:常见的设计模式及其运用 1.使用GOF设计模式,借鉴前人的经验。 2.分析创建型模式:单例模式(Singleton)、工厂模式、抽象工厂模式(Abstractfactory) 3.分析结构型模式:桥梁模式(Bridge)、装饰模式(Decorator)、适配器模式(Adapter)、代理模式(Proxy)、组合模式(Composite) 4.分析行为型模式:命令模式(Command )、观察者模式(Observer)、状态模式(State)、策略模式(Strategy)、模板方法模式(Template Method)、访问者模式(Template Method) 内容二:常见的设计模式及软件原则案例分析 1.某游戏软件设计 2.某管理软件设计 |
第三单元 领域驱动及系统实践 内容一:业务逻辑层中的子层设计 1.信息专家原则在重构的运用 2.使用类的封装特征实现数据和函数隐藏 3.业务逻辑层组件设计 4.领域驱动设计的思想及其在类编码中的实践 5.业务服务、façade、实体、值对象、领域对象 6.充血模型、贫血模型、失血模型在编码中的分析 内容二:系统接口设计 1.内存接口及网络接口要点 2.依赖倒置原则 3.接口隔离原则 内容三:IOC原理及其在编码中的应用 1.理解IOC的本质 2.服务组件及能组件的设计 3.灵活使用IOC达成可扩展的代码体系 案例分析及练习——通用数据处理系统设计及实现 内容四、 典型案例分析 1.订餐系统 2.某设备系统设计 |
第四单元 识别代码中的坏味道及重构实践 内容一:重构初步:识别编码中的坏味道 1.重复的代码 2.过大的类及过长的函数 3.耦合:依恋情结、数据泥团及过度耦合的消息链 4.分散的逻辑:发散的变化及霰弹式的修改 5.复杂的逻辑:switch现象及平行继承体系 6.其它:中间人、数据类、不佳的继承 内容二:重构实践:面向对象及领域驱动 1.将过程化设计转化为对象设计,并讨论过程化设计与对象化设计的特点及历史博弈;并给出过程式设计及及对象设计的模式——合适的就是好的! 2.封装值域/自封装值域的重构 3.以数据类取代记录的策略 4.以对象取代数组的策略 5.以类取代型别码——Replace Type Code with Class 6.以子类取代型别码——Replace Type Code with Subclasses 7.以值域取代子类——Replace Subclass with Fields 8.建模为属性与建模为对象——系统建模中的微妙变化 9.Data Class——纯粹的数据类 10.以State/Strategy取代型别码 11.通过案例介绍函数的重构 内容三:重构实践—复杂条件表达式重构 1.常见问题,如何处理让人疯狂的复杂分类? 2.以多态取代条件式——Replace Conditional with Polymorphism 3.提炼继承体系——Extract Hierarchy 4.塑造模板函数——Form Template Method 5.以委托取代继承——Replace Inheritance with Delegation 6.以继承取代委托——Replace Delegation with Inheritance 7.用Strategy替换条件逻辑 8.用Bridge组合动态变化 9.用State替换状态改变条件语句 10.用Composite替换隐含树 11.用Command替换条件调度程序 12.在多态体系中,如何处理子条件不一致的情况——继承体系中的高级技巧。 内容四:重构实践—去除“大泥球”式的设计 1.过大的函数、模块、子系统 2.依恋情结、数据泥团 3.从系统设计的角度分析混乱产生的原因 4.通过案例介绍如何分解系统 内容五:重构实践—职责单一 1.一个模块完成一个职责——子模块位于同一个抽象层次 2.功能函数与逻辑函数的分离 3.Divergent Change——发散的变化 4.Shotgun Surgery——散弹枪式的修改 |
第五单元平台重构实践 内容一:某系统重构分析 1.底层服务抽取分析 2.分析子系统并对其定位 3.重构对现有系统的冲击及避免方式 |