【JAVA】如何写好代码

如何写好代码

1、问题

  • Spring bean 相互依赖 在注入的时候是什么情况
  • enum 的使用
  • 多余的临时变量 list -> map
  • 函数职责
  • 代码完成后 应该便于拆分 便于测试
  • 把面向对象写成面向过程
  • client 应该保持只调用接口 类的细节应该隐藏 方便重构
  • 抽象能力
  • null 值判定
  • 避免打印重复
  • 英语表达
  • 设计原则
    • 单一指责原则
    • 开闭原则
    • 里氏替换原则
    • 接口分离原则
    • 依赖倒置原则
    • 迪米特法则
    • 不要重复

2、设计模式

  • 创建型模式:

    • 抽象工厂 创建几类家族的实例
    • 构建者 把对象的构建和它分开
    • 工厂方法 创建一个共通接口的若干子类的实例
    • 原型 创建一个被克隆初始化的实例用于复制或者克隆
    • 单例 使一个类无论在什么时候访问都可以得到唯一的实例
  • 结构性模式:

    • 适配器 为多个不同的类之间建立连接的接口
    • 桥接 对象有多个属性时把属性之间的关联关系从m * n 改为 m + n
    • 组合 创建一个自相似的树形结构的节点
    • 装饰 动态的为对象增加责任
    • 外观 通过一个接口来隐藏整个子系统
    • 享元 用一个共享的实例来加快访问
    • 代理 用一个对象来代表另外一个对象
  • 行为型模式:

    • 职责链 在一个链条间传递任务
    • 命令 把命令包装成对象
    • 翻译者 在一个语言环境中不同的语言元素表示不同的语义
    • 迭代器 循环地访问一个列表中的元素
    • 协调者 在对象之间建立一个简化的沟通类
    • 备注 存储对象内部的数值
    • 观察者 当对象发生变化时通知一组其他对象
    • 状态 当对象状态变更时变更处理
    • 策略 采取不同的算法进行不同的处理
    • 模板方法 把通用的处理放在父类,具体的实现步骤放在子类的实现
    • 访问者 不必改变对象定义的情况下定义应用于对象的操作

3、英文表达

  • 名词 一般用了表示属性 复数如List 不要用bookList 而应该是 books
  • 动词 一般用来表示方法 方法名称中一般包含一个动词
  • 动名词 可作为属性 也可作为方法 如 action configuration 类或接口出也行 如 Activity{} class Service
  • 形容词 应作为属性的某种状态 例如 visible 表示是否可见
  • 代词 this java 保留字 what 表示一个可能和自己重名的对象 other 指代比较对象
  • 介词、连词等
    • by 表示后面条件执行的动作
    • for 表示执行前面的动作是为了后面的目的 如 TestEngine.waitForIdle()
    • at 表示根据后面的条件执行条件执行前面的动作
    • and 表示两个条件都需要成立才够执行前面的动作
    • or 表示两个条件只需一个条件成立即可执行前面的动作
posted @ 2020-04-20 15:25  加州水果  阅读(307)  评论(0编辑  收藏  举报