ilearning

常用设计模式

1.创建型

常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。
不常用的有:原型模式

2.结构型

常用的有:代理模式桥接模式装饰器模式、适配器模式。
不常用的有:门面模式、组合模式、享元模式。

3.行为型

常用的有:观察者模式、模板模式、策略模式(待补充代码)、职责链模式、迭代器模式、状态模式。
不常用的有:访问者模式、备忘录模式、命令模式、解释器模式、中介模式。

最常用的评价标准有哪几个?

有以下七个标准

  1. 可维护性
  2. 可读性
  3. 可扩展性
  4. 灵活性
  5. 简洁性
  6. 可复用性
  7. 可测试性

其中最常见最重要的有三个

  1. 可维护性
  2. 可读性
  3. 可扩展性

    如何发现代码质量问题?

    从大处着眼的话,我们可以参考之前讲过的代码质量评判标准,看这段代码是否可读、可扩展、可维护、灵活、简洁、可复用、可测试等等。落实到具体细节,我们可以从以下几个方面来审视代码。
  • 目录设置是否合理、模块划分是否清晰、代码结构是否满足“高内聚、松耦合”?
  • 是否遵循经典的设计原则和设计思想(SOLID、DRY、KISS、YAGNI、LOD等)?
  • 设计模式是否应用得当?是否有过度设计?
  • 代码是否容易扩展?如果要添加新功能,是否容易实现?
  • 代码是否可以复用?是否可以复用已有的项目代码或类库?是否有重复造轮子?
  • 代码是否容易测试?单元测试是否全面覆盖了各种正常和异常的情况?
  • 代码是否易读?是否符合编码规范(比如命名和注释是否恰当、代码风格是否一致等)?

    代码常规检查项共性问题

  • 代码是否实现了预期的业务需求?

  • 逻辑是否正确?是否处理了各种异常情况?
  • 日志打印是否得当?是否方便debug排查问题?
  • 接口是否易用?是否支持幂等、事务等?
  • 代码是否存在并发问题?是否线程安全?
  • 性能是否有优化空间,比如,SQL、算法是否可以优化?
  • 是否有安全漏洞?比如输入输出校验是否全面?

    面向对象四大特性

    封装:信息隐藏,数据访问保护
    抽象:隐藏方法的具体实现,让使用者只需要关心方法提供了哪些功能,不需要知道这些功能是如何实现的。抽象的应用比较广泛,比如基于接口而非实现编程、开闭原则(对扩展开放、对修改关闭)、代码解耦(降低代码的耦合性)等。在定义(或者叫命名)类的方法的时候,也要有抽象思维,不要在方法定义中,暴露太多的实现细节。这里有个注意点,一定要对方法有明确的定义。
    如果要表示is-a的关系,并且是为了解决代码复用问题,我们就用抽象类
    如果要表示一种has-a关系,并且是为了解决抽象而非代码复用问题,就用接口
    继承:表示类之间is-a关系,继承最大的好处就是代码复用,但是继承也是一个有争议的特性,多用组合少用继承
    多态:子类可以替代父类,在实际的代码运行过程中,调用子类的方法实现。多态需要继承加方法重写的语法机制支持,多态特性能提高代码的可扩展性和复用性