• 代码走查案例2


    使用阿里代码规约IDEA插件扫描了工程代码,发现了需要优化的地方,希望大家可以在开发自己的项目时避免此类问题。

    【Blocker】

    1. long或者Long初始赋值时,必须使用大写的L,不能是小写的l,小写容易跟数字1混淆,造成误解。
    2. 在if/else/for/while/do语句中必须使用大括号,即使只有一行代码,避免使用下面的形式:if (condition) statements;
    3. 在使用正则表达式时,利用好其预编译功能,可以有效加快正则匹配速度。
    4. 所有的包装类对象之间值的比较,全部使用equals方法比较。
    5. 所有的覆写方法,必须加@Override注解。
    6. 线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。
    7. 获取当前毫秒数:System.currentTimeMillis(); 而不是new Date().getTime();
    8. 避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。

    【Critical】

    1. Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals。
    2. SimpleDateFormat 是线程不安全的类,一般不要定义为static变量,如果定义为static,必须加锁,或者使用DateUtils工具类。
    3. 不能使用过时的类或方法。
    4. 不能在finally块中使用return,finally块中的return返回后方法结束执行,不会再执行try块中的return语句。
    5. 在一个switch块内,每个case要么通过break/return等来终止,要么注释说明程序将继续执行到哪一个case为止;在一个switch块内,都必须包含一个default语句并且放在最后,即使它什么代码也没有。
    6. 常量命名应该全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
    7. 所有的枚举类型字段必须要有注释,说明每个数据项的用途。
    8. 抽象类命名使用Abstract或Base开头。
    9. 方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase,必须遵从驼峰形式。
    10. 线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。

    【Major】

    1. POJO类必须写toString方法。使用工具类source> generate toString时,如果继承了另一个POJO类,注意在前面加一下super.toString。
    2. 不允许任何魔法值(即未经定义的常量)直接出现在代码中。
    3. 中括号是数组类型的一部分,数组定义如下:String[] args
    4. 事务场景中,抛出异常被catch后,如果需要回滚,一定要手动回滚事务
    5. 关于基本数据类型与包装数据类型的使用标准如下:(1)所有的POJO类属性必须使用包装数据类型。(2)RPC方法的返回值和参数必须使用包装数据类型。(3)所有的局部变量推荐使用基本数据类型
    6. 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式
    7. 单个方法的总行数不超过80行。
    8. 及时清理不再使用的代码段或配置信息。
    9. 定义DO/DTO/VO等POJO类时,不要加任何属性默认值
    10. 循环体内,字符串的联接方式,使用StringBuilder的append方法进行扩展。
    11. 所有的抽象方法(包括接口中的方法)必须要用javadoc注释、除了返回值、参数、异常说明外,还必须指出该方法做什么事情,实现什么功能。
    12. 所有的类都必须添加创建者信息。
    13. 方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释使用/* */注释。注意与代码对齐。
    14. 类、类属性、类方法的注释必须使用javadoc规范,使用/**内容*/格式,不得使用//xxx方式和/*xxx*/方式。
    15. 类名使用UpperCamelCase风格,必须遵从驼峰形式,但以下情形例外:(领域模型的相关命名)DO / BO / DTO / VO / DAO
    16. 避免采用取反逻辑运算符。
    17. 除常用方法(如getXxx/isXxx)等外,不要在条件判断中执行复杂的语句,将复杂逻辑判断的结果赋值给一个有意义的布尔变量,以提高可读性。
    18. 集合初始化时,指定集合初始值大小
  • 相关阅读:
    hello word
    HDU 1006 Tick and Tick
    HDU 1005 Number Sequence
    HDU 1004 Let the Balloon Rise
    HDU 1003 Max Sum
    HDU 1002 A + B Problem II
    HDU 1001 Sum Problem
    HDU 1000 A + B Problem
    POJ 2253 Frogger
    POJ 2387 Til the Cows Come Home
  • 原文地址:https://www.cnblogs.com/luao/p/10834614.html
Copyright © 2020-2023  润新知