• 【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 表示两个条件只需一个条件成立即可执行前面的动作
    “年轻时,我没受过多少系统教育,但什么书都读。读得最多的是诗,包括烂诗,我坚信烂诗早晚会让我邂逅好诗。” by. 马尔克斯
  • 相关阅读:
    HDU 1572 (DFS)
    UVA 439 BFS 骑士的移动
    STL next_permutation 和 prev_permutation
    Fire Net
    HDU 1026
    Awesome CS Courses 超级棒的课程
    Tensorflow 最佳实践样例程序-mnist
    关于交叉熵在loss函数中使用的理解
    神经网络训练程序,tensorflow
    神经网络前向传播算法的tensorflow实现。
  • 原文地址:https://www.cnblogs.com/jzsg/p/12738047.html
Copyright © 2020-2023  润新知