前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java编程规范-文件组织与排版

Java编程规范-文件组织与排版

作者头像
向着百万年薪努力的小赵
发布2022-12-01 08:17:27
6300
发布2022-12-01 08:17:27
举报
文章被收录于专栏:小赵的Java学习

文件组织 1文件名

Java源文件以其顶层的类名来命名,区分大小写,文件扩展名为 " .java " 。

2源文件结构

源文件应该按如下顺序布局 ( 如果有该部分内容 ) : 1、文件头注释;不强制要求按照此规范处理 2、package 语句; 3、import 语句; 4、类或接口声明 / 实现;

3一个文件只定义一个类

为方便程序的阅读与代码的维护,一个源文件中只定义一个类,内部类不受此限制。

排版 Java 代码总的排版风格要求是代码清晰易读,便于 Review 和维护。 1缩进

不强制按照此规范改造 代码块要采用缩进风格编写, 缩进采用 4 个空格 , 不允许使用 Tab 缩进 。 在函数体的开始、类和接口的定义、以及 if、else、for、do、while、switch、case、try、catch、finally等语句中的代码或者static、synchronized等代码块中都要采用上述缩进方式。 示例: 【正确用法】

代码语言:javascript
复制
if (a > b) { 
    doSomething(); 
} 

2大括号

不强制按照此规范改造 1、左大括号前不换行,括号后换行; 2、右大括号前换行,与引用他们的语句对齐; 3、如果右大括号是一个语句、函数体或类的终止,则在右大括号后换行,否则不换行; 4、如果大括号中没有语句,且右大括号后也没有语句时,则右大括号前不换行,与左大括号处于同一行; 示例: 【正确用法】

代码语言:javascript
复制
if (a > b) { 
    doSomething(); 
} 
  
if (a > b) { 
    doSomething(); 
} else { 
    doSomething(); 
} 
void doNothing() {} 

3换行

不强制按照此规范改造 1、一行代码的长度不应该超出 120 个字节,超长的代码应该换行; 2、如果换行,应该遵循如下原则: 在逗号 ‘,’ 后换行; 在较低优先级操作符前换行,操作符位于新行之首; 采用适当缩进保证代码清晰易读; 方法调用的点符号与下文一起换行; 在括号前不要换行; 示例: 【正确用法】

代码语言:javascript
复制
/* 不足 120 字节时,不换行 */ 
someMethod(l o ng Expression1, long Expression2, long Expression3); 
  
/* 超过 120 字节时,需要换行,换行后要使代码清晰易读 */ 
someMethod(l o ng Expression1, 
            l o ng Expression2, 
            l o ng Expression3, 
            l o ng Expression4, 
            l o ng Expression5); 
  
/* 不足 120 字节时,不换行 */ 
longName1 = longName2 + longName3 + longName4; 
  
/* 超过 120 字节时,需要换行,换行后要使代码清晰易读 */ 
longName1 = longName2 
          + (longName3 + longName4 – longName5) 
          + (4 + longName6); 
  
StringBuilder strBuilder = new StringBuilder(); 
strBuilder.append("userName=").append(userName) 
           .append("&address=").append(address); 

4空行

不强制按照此规范改造 下列 情况应该使用空行以使代码结构清晰,提高代码可读性: 1、4.2 章节 列举的源文件结构块之间; 2、类属性和类方法之间; 3、两个方法之间; 4、方法内的局部变量和第一条语句之间; 5、方法内的逻辑段之间; 6、注释之前 ( 文件头注释除外 ) ; 示例: 【正确用法】

代码语言:javascript
复制
package com.dtdrea m .client; 
  
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.HashMap; 
  
public class UserInfo { 
    private String usrName; 
    private String usrAddr; 
  
    public userInfo(String usrName, String usrAddr) { 
        this.usrName = usrName; 
        this.usrAddr = usrAddr; 
    } 
    ... 
} 

5空格

不强制按照此规范改造 下列位置应该使用空格以使代码结构清晰,提高代码可读性: 1、左大括号前; 2、如果右大括号后面有语句,右大括号与后面语句之间; 3、关键字 (if 、 for 、 while 、 switch 、 catch 等 ) 和左括号 ‘(’ 之间; 4、二元操作符前后都需要有空格, ‘.’ 除外; 5、参数列表中的逗号 ‘,’ 后面; 6、for 循环中的表达式之间,分号 ‘;’ 后面; 7、foreach 循环中冒号 ‘:’ 前后; 8、方法名 ( 包括声明和调用 ) 和左括号 ‘(’ 之间 不需要 空格; 9、小括号与内部字符之间 不需要 空格; 10、没有必要 增加若干空格来使某一行的字符与上一行对应位置的字符对齐。 11、多行注释中,换行后星号 ‘’ 之前至少放置一个空格,为实现与首行注释的星号 '’ 对齐; 12、注释星号 ‘*’ 与注释内容 如果处于同一行,两者 之间放置一个空格; 13、注释的双斜线与注释内容之间有且仅有一个空格; 示例: 【错误用法】

代码语言:javascript
复制
/ / 小括号 与内部字符间不需要空格 
if ( a == b ) 
  
//  没有 必要追求多行 对齐 
int              a = 3; 
long             b = 4L; 
StringBuilder sb = new StringBuilder(); 

【正确用法】

代码语言:javascript
复制
for (int i = 0; i < 10; i++) { 
    a += i; 
} 
  
for (String usrName : usrList) { 
    usrAge = usrInfoClass.getUsrAge(usrName); 
    usrInfoClass.showUser(usrName, usrAge); 
} 
  
int a = 3; 
long b = 4L; 
StringBuffer sb = new StringBuffer(); 

6声明 建议按照此规范处理 1、每行最多声明一个变量; 示例: 【错误用法】

代码语言:javascript
复制
int a, b; 

【正确用法】

代码语言:javascript
复制
int a = 0; 
int b = 0; 

2、定 义数组时,方括号 " [] " 是类型的一部分,所以方括号 " [] " 应放在数据类型后,不要放在变量名后; 示例: 【错误用法】

代码语言:javascript
复制
byte rcvBuf [] = new byte[MAX_RECV_BUF_SIZE]; 

【正确用法】

代码语言:javascript
复制
byte [] rcvBuf = new byte[MAX_RECV_BUF_SIZE]; 

3、如果有多个修饰符,修饰符按照如下顺序排列:

代码语言:javascript
复制
public protected private abstract static final transient volatile synchronized native strictfp 

示例: 【 错误用法】

代码语言:javascript
复制
public final static int MAX_USER_CNT = 1024; 

【正确用法】

代码语言:javascript
复制
public static final int MAX_USER_CNT = 1024; 

7类成员排列顺序

不强制按照此规范改造 类成员不要交叉放置,不同存取范围的属性或者方法也尽量不要交叉放置,推荐按照如下顺序排列:

代码语言:javascript
复制
类定义 { 
静态成员变量 / Static Fields 
静态初始化块 / Static Initializers 
成员变量 / Fields 
初始化块 / Initializers 
构造器 / Constructors 
静态成员方法 / Static Methods 
成员方法 / Methods 
重载自Object的方法如toString(), hashCode() 和main方法 
类型(内部类) / Types(Inner Classes) 
同等的类型,按public, protected, private的顺序排列。 
} 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档