Java 代码规范

473 阅读2分钟

review 代码时,发现代码有很多不规范的地方。对软件来说,适当的规范和标准能以一种普遍认可的统一方式一起做事,提升协作效率,降低沟通成本。本文参考《阿里巴巴java开发手册》,整理了之前没有注意到的点,在以后的代码开发中多加关注。

代码格式

  • 【强制】单行字符数限制不超过 120 个,超出需要换行,换行时 遵循如下原则:

    • 第二行相对第一行缩进 4 个空格,从第三行开始,不再继续缩进。
    • 运算符与下文一起换行。
    • 方法调用的点符号与下文一起换行。
    • 方法调用中的多个参数需要换行时,在逗号后进行。
    • 在括号前不要换行
  • 【推荐】单个方法的总行数不超过 80 行。

    • 说明: 包括方法签名、结束右大括号、方法内代码、注释、空行、回车及任何不可见字符的总 行数不超过 80 行。
    • 正例:代码逻辑分清红花和绿叶,个性和共性,绿叶逻辑单独出来成为额外方法,使主干代码更加清晰;共性逻辑抽取成为共性方法,便于复用和维护。

异常日志

异常处理

  • 【强制】可以通过预检查避免的 RuntimeException 不应该用 catch 来处理。比如 NullPointerException。
    • 正例:if (obj != null) {...}
    • 反例:try { obj.method(); } catch (NullPointerException e) {...}
  • 【强制】捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。最外层的业务使用者,必须处理异常,将其转化为用户可以理解的内容。
    • 处理时不建议全部交由框架去处理。
    • 框架可以做兜底工作。异常上升到最上层逻辑还是无法处理的话,可以以统一的方式进行异常转换处理那些未知异常。
    • 对于自定义的业务异常,提取异常中的错误码和消息等信息,转换为合适的 API 包装体返回给 API 调用方。
    • 对于无法处理的系统异常,以 Error 级别的日志记录异常和上下文信息(比如 URL、参数、用户 ID)后,转换为普适的“服务器忙,请稍后再试”异常信息,同样以 API 包装体返回给调用方。

日志规约

  • 【强制】异常信息应该包括两类信息:案发现场信息和异常堆栈信息。如果不处理,那么通过关键字throws往上抛出。
    • 正例:logger.error(各类参数或者对象toString() + "_" + e.getMessage(), e);
    • 不要使用 e.printStackTrace(),e.printStackTrace()是通过System.err把日志输出到控制台,不会输出到日志中,不利于后期管理查看。
    • e.getMessage()记录错误基本描述信息,e记录详细的堆栈异常信息。