一、抛砖引玉
- 数据结构和算法:是教如何写高效代码
- 设计模式:如何写出可扩展、可读、可维护的高质量代码
二、头脑风暴
- 设计模式
- 引出问题(开发通用模块注意问题?)
- 如何分层、分模块?
- 应该怎么划分类?
- 每个类应该具有哪些属性、方法?
- 怎么设计类之间的交互?
- 该用继承还是组合?
- 该使用接口还是抽象类?
- 怎么做到解耦、高内聚低耦合?
- 该用单例模式还是静态方法?
- 用工厂模式创建对象还是直接 new 出来?
- 如何避免引入设计模式提高扩展性的同时带来的降低可读性问题?
- …
- 评价标准:代码质量
- 可维护性
- 在不破坏原有代码设计、不引入新 bug 情况下,能够快速修改或添加代码
- 可读性
- 代码是否符合编码规范
- 命名是否达意
- 注释是否详尽
- 函数是否长短合适
- 模块划分是否清晰
- 是否符合高内聚低耦合等
- 可扩展性
- 对修改关闭,对扩展开放
- 灵活性
- 易扩展、易复用、易使用
- 简洁性(简单、复杂)
- 思从深而行从简
- KISS:keep it simple,stupid
- 可复用性
- DRY:Donot repeat yourself
- 继承多态(面向对象特性)
- 单一职责(设计原则)
- 解耦、高内聚、低耦合(重构技巧)
- 可测试性
- 重构时
- 设计思想(面向对象)-基础
- 封装、抽象、继承、多态
- 面向对象编程 vs 面向过程编程
- 面向对象分析、设计、编程
- 接口 vs 抽象类
- 基于接口而非实现编程
- 多用组合少用继承
- 贫血模型和充血模型
- 设计原则-场景
- SOLID 原则-SRP 单一职责原则
- SOLID 原则-OCP 开闭原则
- SOLID 原则-LSP 里氏替换原则
- SOLID 原则-ISP 接口隔离原则
- SOLID 原则-DIP 依赖倒置原则
- DRY 原则、KISS 原则、YAGNI 原则、LOD 法则
- 设计模式-设计问题
- 创建型
- 单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式
- 原型模式
- 结构型
- 代理模式、桥接模式、装饰者模式、适配器模式
- 门面模式、组合模式、享元模式
- 行为型
- 观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式
- 访问者模式、备忘录模式、命令模式、解释器模式、中介模式
- 编码规范-可读性
- 20 条最快速改善代码质量的编程规范
- 重构技巧-保证质量
- 目的 why、对象 what、时机 when、方法 how
- 单元测试和代码的可测试性
- 大重构(大规模高层次)
- 小重构(小规模低层次)
三、附录
代码质量描述
灵活性(flexibility)、可扩展性(extensibility)、可维护性(maintainability)、可读性(readability)、可理解性(understandability)、易修改性(changeability)、可复用(reusability)、可测试性(testability)、模块化(modularity)、高内聚低耦合(high cohesion loose coupling)、高效(high effciency)、高性能(high performance)、安全性(security)、兼容性(compatibility)、易用性(usability)、整洁(clean)、清晰(clarity)、简单(simple)、直接(straightforward)、少即是多(less code is more)、文档详尽(well-documented)、分层清晰(well-layered)、正确性(correctness、bug free)、健壮性(robustness)、鲁棒性(robustness)、可用性(reliability)、可伸缩性(scalability)、稳定性(stability)、优雅(elegant)、好(good)、坏(bad)……
主流思想
面向过程、面向对象、函数式编程
设计模式-类模式