Java代码规范

Java代码规范

下面规范中, 大多参考阿里代码规范
采用checkstyle.xml进行代码规范检查
正确的使用IDE的格式化代码之后, 几乎都能pass这个检查


代码设计规范

  • 参数传递, 无特殊情况, 禁止采用map进行传参
  • 无特殊情况, 不允许出现大段重复代码
  • 类, 方法, 变量命名必须要有清晰的语义性, 能够让人从名字就可快速知道其代表的业务含义, 禁止data, flag, getData()等等一系列毫无意义的命名
  • 代码的关键逻辑处, 必须加上注释
  • 抽象类, 接口, 子类等设计, 层次要清晰, 抽象要明确, 不做无谓的接口抽象, 但是在需要进行扩展之处, 必须进行抽象依赖, 并加上必要的注释
  • 不能使用过时的类或方法
  • //TODO

Java Code规则

  • 文件中不允许出现tab字符
  • import语句不允许使用星号
  • 每行只能有一条语句
  • 每一行只能定义一个变量
  • 定义数组时, 采用java风格 (int[] num是java风格, int num[]是c风格)
  • 在一个 switch 块内, 都必须包含一个 default 语句并且放在最后, 即使它什么代码也没有
  • 检查switchcase后是否加入了跳出语句, 例如: return、break、throw、continue
  • 检查是否在long类型是否定义了大写的L.字母小写l和数字1(一)很相似.
  • 检查修饰符的顺序, 默认是 public,protected,private,abstract,static,final,transient,volatile,synchronized,native
  • 当一个类有多个构造方法, 或者多个同名方法, 这些方法应该按顺序放置在一起, 便于阅读.

命名规范

  1. 代码中的命名均不能以下划线或美元符号开始, 也不能以下划线或美元符号结束.
    反例: _name / __name / $Object / name_ / name$ / Object$
  2. 代码中的命名严禁使用拼音与英文混合的方式, 更不允许直接使用中文的方式.
    说明: 正确的英文拼写和语法可以让阅读者易于理解, 避免歧义. 注意, 即使纯拼音命名方式也要避免采用.
    反例: DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量 = 3
    正例: alibaba / taobao / youku / hangzhou等国际通用的名称, 可视同英文.
  3. 类名使用 UpperCamelCase 风格, 必须遵从驼峰形式, 但以下情形例外: (领域模型的相关命名)DO / BO / DTO / VO 等.
    正例: MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion
    反例: macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion
  4. 方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格, 必须遵从驼峰形式.
    正例: localValue / getHttpMessage() / inputUserId
  5. 常量命名全部大写, 单词间用下划线隔开, 力求语义表达完整清楚, 不要嫌名字长.
    正例: MAX_STOCK_COUNT
    反例: MAX_COUN

代码格式规范:

  1. 大括号的使用约定. 如果是大括号内为空, 则简洁地写成{}即可, 不需要换行; 如果是非空代码块则:
    • 左大括号前不换行.
    • 左大括号后换行.
    • 右大括号前换行.
    • 右大括号后还有 else 等代码则不换行; 表示终止右大括号后必须换行.
  2. 左括号和后一个字符之间不出现空格; 同样, 右括号和前一个字符之间也不出现空格. 详见第 5 条下方正例提示.
  3. if/for/while/switch/do 等保留字与左右括号之间都必须加空格.
  4. 任何运算符左右必须加一个空格.
    说明: 运算符包括赋值运算符=、逻辑运算符&&、加减乘除符号、三目运算符等.
  5. 缩进采用 4 个空格, 禁止使用 tab 字符.
    说明: 如果使用 tab 缩进, 必须设置 1 个 tab 为 4 个空格. IDEA 设置 tab 为 4 个空格时,
    请勿勾选 Use tab character; 而在 eclipse 中, 必须勾选 insert spaces for tabs.
    正例: (涉及 1-5 点)
    public static void main(String[] args) {
        // 缩进 4 个空格
        String say = "hello";
        // 运算符的左右必须有一个空格
        int flag = 0;
        // 关键词 if 与括号之间必须有一个空格, 括号内的 f 与左括号, 0 与右括号不需要空格
        if (flag == 0) {
            System.out.println(say);
        }
    
        // 左大括号前加空格且不换行; 左大括号后换行
        if (flag == 1) {
        System.out.println("world");
        // 右大括号前换行, 右大括号后有 else, 不用换行 
        } else {
        System.out.println("ok");
        // 在右大括号后直接结束, 则必须换行
        }
    }
  1. 单行字符数限制不超过 120 个, 超出需要换行, 换行时遵循如下原则:

    1. 第二行相对第一行缩进 4 个空格, 从第三行开始, 不再继续缩进, 参考示例.
    2. 运算符与下文一起换行.
    3. 方法调用的点符号与下文一起换行.
    4. 在多个参数超长, 逗号后进行换行.
    5. 在括号前不要换行, 见反例.

    正例:

    StringBuffer sb = new StringBuffer();
    //超过 120 个字符的情况下, 换行缩进 4 个空格, 并且方法前的点符号一起换行
    sb.append("zi").append("xin")...
        .append("huang")...
        .append("huang")...
        .append("huang");
反例: 
    StringBuffer sb = new StringBuffer();
    //超过 120 个字符的情况下, 不要在括号前换行
    sb.append("zi").append("xin")...append
        ("huang");
    //参数很多的方法调用可能超过 120 个字符, 不要在逗号前换行
    method(args1, args2, args3, ...
        , argsX);
  1. 方法参数在定义和传入时, 多个参数逗号后边必须加空格.
    正例: 下例中实参的"a",后边必须要有一个空格. method("a", "b", "c");

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×