欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

我的代码风格(持续更新ing)

程序员文章站 2022-04-27 18:58:40
...

我的代码风格(持续更新ing)

  1. 通用的 utils 方法代替直接使用对象的方法,比如:

    String str = "hello world";
    String match = "hello";
    // 不建议的方式
    null == str;
    // 建议使用这样的方式
    Objects.isNull(str);
    

    个人的理解:

    • 直接使用对象进行判断没有utils方法更贴切想表达的意思,虽然 Objects.isNull() 方法内部也是 null == str 的逻辑,但是从方法名字上可以直观的感受出这是为了做是否为null的判断。
    • utils 方法其实一般都是静态方法,就 utils 方法本事来看,不会产生np的问题,但是如果直接使用对象,则很可能会产生np问题(这个对象是不是null)。
  2. 设计成接口方法还是抽象成 utils 方法:

    • 我觉的 utils 方法类其实是工具类,也就是工具,工具是什么?工具是辅助我们做事情的东西,所以我觉的那些 辅助的 通用的 应该抽取为工具方法,比如按照一定的约定解析一个字符串应该设计成 utils 方法
    • 那接口方法呢?我理解的接口方法其实为了具体类而设计的 公用功能属性,所以接口应该是 为类而设计,比如我们要设计一个水果,水果要提供颜色,获取颜色应该设计为一个接口,而苹果,香蕉等一系列实现类都有颜色的属性和都应该提供颜色功能。
  3. 面向对象编程原则:

    • 对于java程序员说出这样的话听起来很奇怪,java本事就是面向对象的语言,为什么还要强调面向对象编程?在项目实现的过程中,我慢慢发现,很多的内容设计还是面向过程的设计,一个大类千百行实现一个业务,即使抽象了 utils 方法,依旧是面向过程。
    • 怎么才叫面向对象编程呢?我觉的更多的是这种思想和设计。比如我最近做的劵的项目,有不同种类的劵,他们的优惠形式不同,如何计算出劵的优惠金额呢?面向过程就是判断什么券,然后按照这个券进行规则计算,这样就是一大堆的代码堆在了一个类里。那如何来设计呢?其实我们来想,其实我们不同劵的金额计算是属于劵的属性和功能,我们可以提供一个计算接口,不同的劵实现这个接口,实现自己的计算优惠金额。所以说意识到是个对象的时候,才会思考去设计。
  4. 慎重使用继承:

    • 继承是面向对象的基本属性之一,但是最近在项目的过程中,因为使用了继承出现的问题困扰了我,我觉的如果自己没有想好,还是不要使用继承
    • 我觉的继承是为了设计而使用的,类和类之间真的存在了父子关系,才应该使用继承,或者你对你的父类有足够的认识。
    • 使用继承的时候需要思考 equals 方法和 hashcode 方法
    • 继承的父类不要产生冗余的域,父类的域要是所有子类的公共属性,并且存在着单一定义
  5. float 和 double 不要使用

    • 不要使用其实是极端的,不过如果不是为了科学计算真的想不到什么业务非要使用 float 和 double,这两个字段是不稳定的,在我们计算的过程中(比如 1/3)会产生随机的数字(最后一位小数),这样会给我们带来很多的困扰(对比是否一个数字),细想下来,我觉的我们没有什么机会要使用这么精确的数字
    • 使用 BigDecimal 代替
  6. 使用整数代替小数

    • 报价计算是存在很多计算过程,常常会有产品提出我想搞个配置文件,配置个百分比率进行计算,我们前端可以提供小数的配置方式,不过在后端尽量使用整数使用,乘以100的事情嘛,大不了在除以100嘛
    • 这样其实还是为了避免使用 float 和 double
相关标签: java 代码风格