代码格式之什么样的代码格式才是正确的
应该说是最近,因为代码格式的问题被同事指出,虽然说我主观上不是很乐意接受,但是以后如果我要带徒弟的话,首先自己要做到不好的地方,有则改之,否则怎能服人。
代码格式问题主要体现是代码空行太多,一个类的代码行一千多行,其中不必要的空行就多了三四百行。
以我之前写的博客系统其中的代码例子来说(确实看起来不美观):
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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
2018-04-05 MyBatis之反射技术+JDK动态代理+cglib代理
2018-04-05 MyBatis之动态sql