代码格式之什么样的代码格式才是正确的
应该说是最近,因为代码格式的问题被同事指出,虽然说我主观上不是很乐意接受,但是以后如果我要带徒弟的话,首先自己要做到不好的地方,有则改之,否则怎能服人。
代码格式问题主要体现是代码空行太多,一个类的代码行一千多行,其中不必要的空行就多了三四百行。
以我之前写的博客系统其中的代码例子来说(确实看起来不美观):
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 等代码则不换行;表示终止的右大括号后必须换行
修改后,代码格式如下:
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; }