代码格式之什么样的代码格式才是正确的

应该说是最近,因为代码格式的问题被同事指出,虽然说我主观上不是很乐意接受,但是以后如果我要带徒弟的话,首先自己要做到不好的地方,有则改之,否则怎能服人。

代码格式问题主要体现是代码空行太多,一个类的代码行一千多行,其中不必要的空行就多了三四百行。

以我之前写的博客系统其中的代码例子来说(确实看起来不美观):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public SelfUserEntity getUserInfo(String username) {

QueryWrapper<Users> userWrapper = new QueryWrapper<Users>();


//邮箱正则表达式
String expr = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$";

//是否为邮箱
if (username.matches(expr)) {
userWrapper.eq("user_email", username);
} else {
userWrapper.eq("user_login", username);
}


Users userInfo = usersDao.selectOne(userWrapper);

if (userInfo == null) {
throw new NullPointerException(
"用户不存在");
}


SelfUserEntity selfUserEntity = new SelfUserEntity();

if (userInfo.getId() != null) {

selfUserEntity.setUserId(userInfo.getId());
selfUserEntity.setUsername(userInfo.getUserLogin());
selfUserEntity.setPassword(userInfo.getUserPass());
selfUserEntity.setStatus(userInfo.getUserStatus().toString());
}

return selfUserEntity;
}

换言之,我为什么喜欢代码空行这么多?
原因是因为我不喜欢代码看起来太过拥挤、密密麻麻。

参考Java开发手册-编程规约-代码格式第一条如下:
【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则:

  • 1) 左大括号前不换行。
  • 2) 左大括号后换行。
  • 3) 右大括号前换行。
  • 4) 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行

修改后,代码格式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public SelfUserEntity getUserInfo(String username) {
QueryWrapper<Users> userWrapper = new QueryWrapper<Users>();
//邮箱正则表达式
String expr = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$";
//是否为邮箱
if (username.matches(expr)) {
userWrapper.eq("user_email", username);
} else {
userWrapper.eq("user_login", username);
}
Users userInfo = usersDao.selectOne(userWrapper);
//条件判断(等于null)
if (userInfo == null) {
throw new NullPointerException(
"用户不存在");
}
//数据装载
SelfUserEntity selfUserEntity = new SelfUserEntity();
if (userInfo.getId() != null) {
selfUserEntity.setUserId(userInfo.getId());
selfUserEntity.setUsername(userInfo.getUserLogin());
selfUserEntity.setPassword(userInfo.getUserPass());
selfUserEntity.setStatus(userInfo.getUserStatus().toString());
}
return selfUserEntity;
}

文章目录