java 编程规范总结

一、注释

  1. 所有的类、接口、方法都应该加上注释,注释要标明描述、作者、时间等,使信息完备;
  2. 枚举类的每个枚举字段都要标明注释;
  3. 方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释使用/* */注释。注意与代码对齐。
  4. 所有的抽象方法(包括接口中的方法)必须要用javadoc注释、除了返回值、参数、异常说明外,还必须指出该方法做什么事情,实现什么功能。 说明:如有实现和调用注意事项,请一并说明。
  5. 类、类属性、类方法的注释必须使用javadoc规范,使用/**内容*/格式,不得使用//xxx方式和/*xxx*/方式。
  • 命名
  1. 方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase,必须遵从驼峰形式。
  2. 常量命名应该全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
  3. 类名使用UpperCamelCase风格,必须遵从驼峰形式,但以下情形例外:(领域模型的相关命名)DO / BO / DTO / VO / DAO
  4. 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式

  • 代码段
  1. 单个方法的总行数不超过80行,嵌套层数不能超过5层;
  2. 不允许任何魔法值(即未经定义的常量)直接出现在代码中。
  3. 在一个switch块内,每个case要么通过break/return等来终止,要么注释说明程序将继续执行到哪一个case为止;在一个switch块内,都必须包含一个default语句并且放在最后,即使它什么代码也没有。
  4. 集合初始化时,指定集合初始值大小。(hashMap 不知道多大,可以设置为16,防止反复扩容)。
  5. Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals。
  6. long或者Long初始赋值时,必须使用大写的L,不能是小写的l,小写容易跟数字1混淆,造成误解。
  7. 在if/else/for/while/do语句中必须使用大括号,即使只有一行代码。
  8. 在使用正则表达式时,利用好其预编译功能,可以有效加快正则匹配速度。 不要在方法体内定义:Pattern pattern = Pattern.compile(规则);
  9. 所有的覆写方法,必须加@Override注解。
  10. 获取当前毫秒数:System.currentTimeMillis(); 而不是new Date().getTime();
  11. 对于Service和DAO类,基于SOA的理念,暴露出来的服务一定是接口,内部的实现类用Impl的后缀与接口区别。
  12. 事务场景中,抛出异常被catch后,如果需要回滚,一定要手动回滚事务。
  13. 线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。在创建线程池时,要衡量下系统资源,制定合适的参数,如果可以的话,可以使用已经定义好的线程池;
  14. 不能使用过时的类和方法;
  15. 及时清理不再使用的代码段或配置信息。
  16. SimpleDateFormat 是线程不安全的类,一般不要定义为static变量,如果定义为static,必须加锁。
  17. Map/Set的key为自定义对象时,必须重写hashCode和equals。(注解@Data 实现的equal方法只局限于当前类的字段的判断,无法包含父类)
  18. 关于基本数据类型与包装数据类型的使用标准如下:

        1) 所有的POJO类属性必须使用包装数据类型。

        2) RPC方法的返回值和参数必须使用包装数据类型。

        3) 所有的局部变量推荐使用基本数据类型。

 19. maven pom 依赖版本禁止写成RELEASE版本,因为RELEASE版本是可变的,可能导致依赖的变化而使程序不可用。

20.判断所有集合内部的元素是否为空,使用 isEmpty() 方法,而不是 size()==0 的方式。这是因为 isEmpty() 方法的可读性更好,并且时间复杂度为 O(1)。

21.在使用 java.util.stream.Collectors 类的 toMap() 方法转为 Map 集合时,一定要注意当 value 为 null 时会抛 NPE 异常。 

22.hashMap 的key  和 value  都能为null;hashTable key 和 value  均不能为null;ConcurrentHashMap key 和value均不可为null;

23.不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁。

24.使用集合转数组的方法,必须使用集合的 toArray(T[] array),传入的是类型完全一致、长度为 0 的空数组。

25.使用工具类 Arrays.asList() 把数组转换成集合时,不能使用其修改集合相关的方法, 它的 add/remove/clear 方法会抛出 UnsupportedOperationException 异常。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
华为java语言编程规范是指华为公司在使用java编程语言时所遵守的一套规范和约定。这些规范旨在保证代码的可读性、可维护性和可扩展性,以提高代码的质量和开发效率。 首先,华为java语言编程规范强调良好的命名规范。变量、函数、类和包的命名应该能够准确地反映其功能和用途,避免使用过于简单或者过于复杂的命名方式。此外,使用英文单词或者单词的缩写来命名,同时避免使用拼音命名。 其次,规范着重于代码的格式化和缩进。使用合适的缩进和空格,以增强代码的可读性。同时,规范规定了代码的换、括号使用和对齐等格式化要求,以保持代码风格的一致性。 华为java语言编程规范还着重于注释的使用。注释的目的是解释代码的功能和实现思路,并且应该是准确、简洁和易于理解的。规范要求在每个类、函数和重要的代码片段上都添加注释,以便开发人员快速理解代码的含义。 此外,规范还规定了代码的结构和组织方式。类和函数的定义应该简洁明了,遵循单一职责原则。同时,代码中应该避免使用大段的嵌套和重复的逻辑,以提高代码的可维护性。 最后,华为java语言编程规范还提供了一些最佳实践和常见的错误用法。开发人员可以参考这些指南,避免常见的陷阱和错误,提高代码的质量和性能。 总结起来,华为java语言编程规范是一套旨在提高代码质量和开发效率的规范,涵盖了命名规范、代码格式化、注释使用、代码结构和组织等方面。遵循这些规范能够使代码更易读、易于维护和扩展,并且促进团队合作和协作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值