Java开发避坑总结2

  • 控制语句

    1. 在if/else/for/while/do语句中必须使用大括号;
    2. 表达异常的分支时,少用if-else方式处理分支(容易出现错漏、也不便于代码的阅读)
    3. 不要在其它表达式(尤其是条件表达式)中,插入赋值语句
    4. 不要在条件判断中执行其它复杂的语句,以提高可读性;
    5. 避免采用取反逻辑运算符(除一些特殊场景除外)

    关于switch的使用建议

    1. 每个case要么通过continue/break/return等来终止
    2. 如果case中没有终止的控制,需要注释来说明程序将继续执行到哪个case为止
    3. 在switch块中,都必须有一个default语句并放在最后(防止意外情况)
    4. 使用switch前,最好先判断参数是否为空,避免造成NPE出现

    三目运算(condition?表达式1:表达式2)

    三目运算符高度注意类型对齐时,可能抛出因自动拆箱导致的NPE异常。拆箱操作情景:
    1. 表达式1或表达式2的值只要有一个是原始类型
    2. 表达式1或表达式2的值的类型不一致,会强制拆箱升级成表示范围更大的那个类型。

    在高并发场景中控制语句规约

    避免使用“==”判断作为中断或退出的条件,容易产生等值判断被“击穿”的情况,应使用大于或小于的区间判断条件来代替

    需要参数校验的场合

    1. 调用频次低的方法
    2. 执行时间开销很大的方法。此情形中,参数校验时间几乎可以忽略不计,但如果因为参数错误导致中间执行回退,或者错误,那就得不偿失。
    3. 需要极高稳定性和可用性的方法
    4. 对外提供的开放接口,不管是RPC/API/HTTP接口
    5. 敏感权限入口
    6. 公开接口需要进行入参保护,尤其是批量操作的接口

    不需要参数校验的场合

    1. 极有可能被循环使用的方法(方法说明里必须注明外部参数检查)
    2. 底层调用频率比较高的方法
    3. 被声明为private

    面向对象(OOP, Object-Oriented Programming)

    OOP实践了软件工程的三个主要目标:可维护性、可重用性和可扩展性。
    OOP的四大特征:
    抽象:对需求进行业务抽象和建模分析,通过模型的行为组合去共同解决某一类问题
    封装:一种对象功能内聚的表现形式,降低模块之间的耦合度
    继承:使子类能够继承父类,获得父类的部分属性和行为,增强模块的复用性
    多态:使模块在复用性基础上更加有扩展性

    OOP规约

    1. 所有的覆写方法必须加@Override注解(便于检查是否覆写成功)
    2. 可变参数
      a. 相同参数类型,相同业务含义(执行匹配度最高的方法)
      b. 避免使用object
      c. 可变参数必须放置在参数列表的最后
      d. 尽量不用可变参数
    3. 对象比较
      a. 所有整型包装类对象之间值的比较,全部使用equals方法比较
      b. 应使用常量或确定有值的对象来调用equals
    4. 方法及属性中需要校验的场合:
      a. 所有的POJO类属性必须使用包装数据类型
      b.定义DO/DTO/VO等POJO类时,不要设定任何属性默认值
      c.定义数据对象DO类时,属性类型要与数据库字段类型相匹配
      d.getter/setter方法中,不要增加业务逻辑
      e.禁止在POJO类中,同时存在对应属性xxx的isXxx()和getXxx()方法;
      f. 构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请在init方法中进行

    扩展

    可变参数

    定义: 适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。
    特点:

    1. 只能出现在参数列表的最后;
    2. “...”位于变量类型和变量名之间,前后有无空格都可以;
    3. 调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值