• 【极客时间】设计模式之美


    参考  极客时间 设计模式

    一、设计模式学习导读:

    代码评价标准:可维护性、可读性(符合编程规范)、可扩展性(开闭原则)、灵活性、简洁性(KISS原则)、可复用性、可测试性;

    实现方式:

      1)通过继承、多态写出可复用代码;

      2)编程规范:可读性好代码;

      3)设计模式、基于接口而非实现、里氏替换原则等,实现可复用、灵活、可读性好、易扩展、易维护代码; 

      4)持续重构提升可维护性

    设计原则:

      SOLID:   

      DRY:Don't Repeat Yourself.

      KISS:Keep it Simple,Stupid

      YANGI:

      LOD: 

    设计模式:

      创建型:常用(单例,工厂方法,抽象工厂、建造者模式)+ 原型模式

      结构型:常用(代理,桥接、装饰)+ 不常用(适配器, 门面、组合、享元)

      行为型:常用(观察者、模板、策略、职责链、迭代器、状态)  + 不常用(访问者、备忘录、命令、解释器、中介)

    面向对象、设计原则、设计模式、编程规范、代码重构,都是保持、提高带啊质量的方法论。

    P07: 哪些代码设计看似面向对象,实际面向过程?

    1、滥用getter、setter

    默认使用lombok等生成所有属性的get和set,会使得不应该外部访问的属性被外部错误修改,错误样例如下

    1)商品的价格的totalPrice应是由ShoppingCart中addIte(ShoppingItem)计算,而不应该对外暴露setTotalPrice。

    2)错误暴露list类型成员变量的get方法,从而外部获取该list后,可对该list进行add或clear

    2、滥用全局变量和全局方法:讲Constants和Util按功能拆分(FileUtils、StringUtils等),避免修改时周边依赖要进行重新编译时间长

    3、定义数据和方法分离的类,即贫血模型开发模式

    审视代码checklist:  Lesson34

      如何发现代码质量问题-常规checklist

    1. 目录设置是否合理、模块划分是否清晰、代码结构是否满足“高内聚、松耦合”?
    2. 是否遵循景点的设计原则和设计思想:SOLD/DRY/KISS/YAGNI/LOD等?
    3. 设计模式是否应用得当?是否有过度设计?
    4. 代码是否容易扩展?如果要加薪功能,是否容易实现?
    5. 代码是否可以复用?是否可以复用已有的项目代码或类库?是否有重复造轮子?
    6. 代码是否容易测试?单元测试是否全面覆盖各种正常和异常的情况?
    7. 代码是否易读?是否符合编码规范(比如命名和注释是否恰当、代码风格是否一致?)

      如何发现代码质量问题-业务需求checklist

    • 代码是否实现预期的业务需求?
    • 逻辑是否正确?是否处理了各种异常情况?
    • 日志是否打印得当?是否方便debug排查问题?
    • 接口是否易用?是否支持幂等、事务等?
    • 代码是否存在并发问题?是否线程安全?
    • 性能是否有优化空间,如SQL、算法是否可以优化?
    • 是否有安全漏洞?如输入、输出校验是否全面?
  • 相关阅读:
    SLAM基础知识
    标准的机器学习问题
    LAS的数据格式
    Python中的多线程和多进程
    【go】log
    【亲密关系】3-吸引力
    【mysql】做 mariadb 的备库无法启动
    【zabbix-server】Supervising process xxxx which is not our child....exits
    【win10】添加程序自启动
    【Oralce】数据去重,限制某个字段的数据长度,替换空格符
  • 原文地址:https://www.cnblogs.com/clarino/p/15666519.html
Copyright © 2020-2023  润新知