代码开发规范和常识

一、前言

第一次用这么大的标题,怪不好意思的,总结一下,我在开发代码初期遇到的常识问题和习惯问题吧。

二、正文

  1. 命名要有意义:避免使用不具意义的变量名(如 abclist),应该根据上下文选择能够表达其含义的命名。命名清晰的代码有助于后续的阅读和维护。
  2. 代码格式化:统一的代码格式对于团队协作至关重要。对你写的代码使用工具(MAC 如 IntelliJ IDEA 的 command + option + L)进行格式化,可以保持一致性,减少格式问题影响代码质量。
  3. 不要随意改动他人代码:除非你明确理解并需要修改他人的代码,否则不要随便改变。理解他人代码的逻辑是防止引入新问题的基础,后面代码出事故了,就找你兜底了。。。。,然后上面那个格式化,强调了是对选中的格式化!!!
  4. 删除未使用的类或代码:提交前,检查自己写的类和方法是否有用,如果没有使用到,应该删除掉,避免代码冗余。
  5. 避免不必要的代码逻辑变动:在提交之前,检查自己修改的代码,确保没有误改他人逻辑。工具如 IDE 中的比较视图,可以帮助快速识别差异。
  6. git 代码比较:通过 Git 查看红色(删除的部分)和绿色(新增的部分)区域,确保自己提交的修改内容符合预期。
  7. NPE(NullPointerException)处理:在调用对象的方法或属性时,要考虑可能的 null 情况。可以使用工具类进行 null 检查,或者利用 Optional 类型。
  8. 避免 get(0) 造成 NPE:如果操作集合时直接访问 get(0),可能出现 NPE。建议先检查集合是否为空,或者使用更安全的方法,如 isEmpty()
  9. 方法内的 NPE 处理:每个方法的进入点都要做 null 检查,避免因 null 引发异常。可以使用断言、Optional 或自定义的工具方法来加强鲁棒性。
  10. 工具类中的 NPE 处理:当使用工具类时,也要注意其内部是否有适当的 null 处理。例如,EmailUtils 中如果没有做好 null 检查,可能会导致后续的问题。
  11. 调用命名规范:外部调用时使用 client 比如说 openfeign,rpc,内部调用时使用 api 就是前端界面可以直接调用出发。这样有助于区分外部和内部服务调用的不同角色和职责。
  12. 异常日志记录:e.printStackTrace() 不应该用于生产环境的异常记录。应该使用 log.error() 打印更详细的日志信息,包括异常类型、堆栈信息以及相关上下文。
  13. 命名规范:遵循阿里巴巴的命名规范,动词用作布尔值命名(如 isDelete),传递参数时使用名词。这样可以让代码更符合常规的命名习惯,减少误解。
  14. 服务调用失败时处理:服务调用失败的原因可能有很多种,例如网络问题、服务器故障等。返回时尽量封装异常信息,避免暴露过多细节。
  15. lambda 和 builder 使用:lambda 和 builder 是简化代码和提高可读性的有力工具。掌握这两种技术能够让你编写更加优雅和高效的代码
  16. 服务间通信返回值封装:在服务调用时,返回值使用对象封装可以提高扩展性和可维护性,避免直接返回基础类型,讲人话就是使用大对象包括各种属性。
  17. 自审代码:在提交前,假装自己是 code reviewer,检查代码的正确性、规范性和可读性。这可以帮助你发现很多自己写代码时忽略的细节,重点可以看看是不是哪里填写错了,哪里填写反了,或者是是不是又改了
  18. Maven 问题的处理:遇到 Maven 配置问题时,不要直接在其他项目中复制解决方案。应该通过 Git 回滚或查看历史记录来恢复到正确的状态,要不然一堆 change
  19. 测试覆盖率:测试覆盖率有些是触发不了的,有可能是 “前辈” 遗留的代码,如果总是 case 走不到,可以向有经验的同事请求
  20. 测试平台:测试平台也可以进行测试,然后可能是针对不同模块不同测试环境,记得看清楚你的项目是哪个模块,部署在哪个环境
  21. CURL:在 network 上捕获请求,右击可以复制 curl,apifox 支持导入,导入之后就可以直接模拟测试环境请求了,可以查看测试环境传的是什么参数
  22. 开源精神:学会写文档进行分享,一个好的文档是应该跨职业跨小组跨公司的。

三、后言

可能 gpt 味有点重,本人创作之后,喂给 gpt 进行修改了。后续也会把原文贴出来。这些是我开发初期遇到的问题,刚刚好整理下,希望自己以后牢记这些知识。同时也希望自己这篇博客能够给更多刚刚接触企业级开发的同学参考,可以少打回几次代码。

四、未润版

1 代码要顾名思义,不要 a,b,c,list(由于代码问题,前期可能有些前辈也是这么写的,别学)

2 代码要讲究格式,怕格式不对的,喂给 gpt,帮忙,也可以选择你要格式化的地方(这是重点)然后 command+optional+L

3 不是自己写的地方,代码不要改,原因就是事故追责原因,所以我强调要选择要格式化的地方,即只格式化你写的代码就行

4 自己创建的类,后面 ideal 提交,可以自己查看下,有没有用到,没有用到就要删掉,不要提交

5 不要改变无意间的改变别人的代码逻辑,在自己 psuh 之前,先查看提交区有哪些进行了改变,注意 ideal 左边是之前的代码,右边是自己现在的代码。还有啥建议吗

6 git 仓库查看代码,红色代码区域是之前代码,绿色代码区域是自己新提交的修改

7 在使用对象.getXXX,或者是使用一个对象的属性和方法的时候,要先想想 NPE 的处理

8 尽量不要使用 get (0), 也容易出现 NPE 的情况

9 每一个方法的进入处理都要考虑 NPE 处理

10 使用工具类的时候,也要查看内部是否进行 NPE 处理比如说 EmailUtils,就可能会出现 NPE 的情况

11 外部调用命名为 client,内部调用命名规范为 api

12 try。。catch。。finally,的日志不可以打成 e.printStackTrace ();, 要用 log.error (提示符做到哪里了,xxx 参数,e)

13 代码格式就看阿里巴巴命名规范吧,动词可以用 isDelete,如果只是传参作为判断的用名词

14 本服务调用 a 服务,如果返回失败,实际上是无法给出准确原因给值的,因为除了逻辑问题,也有可能会因为网络波动或者是服务器自身状态问题

15 公司用 lambda 和 builder 很多,可以看下怎么用,实在不行 gpt 进行描述

16 本服务调用 b 服务的时候,b 服务返回值,要用对象进行封装返回,其原因是服装性,修改代码地方少

17 在提交的时候,要自己先过一遍,假装自己是 reviewer,你会发现很多问题的

18 在写代码的时候,要先看看你在哪个分支上进行修改的

19 你的 maven 有问题了,你不可以无脑在某个项目上 copy,可以通过 git 代码进行回滚或者是使用 ideal 的历史记录进行修改

#牛客激励计划#
全部评论
学到了
1 回复 分享
发布于 2024-12-19 17:23 河南

相关推荐

一、项目相关1. 项目难点:  ◦ 项目中最具挑战性的部分是什么?如何解决的?  ◦ 面试官持续深入追问项目细节(“拷打项目”)。2. 库存服务实现:  ◦ 如何设计并实现库存服务?整体流程是什么?  ◦ 要求画出流程图。  ◦ 是否使用加锁机制?如何保证库存一致性?  ◦ 如果 Redis 挂了,如何应对?  ◦ 熔断恢复后,如何保证库存数据的一致性?二、技术基础1. Golang 相关问题:  ◦ Golang 的 map 如何保证并发安全?  ◦ map 的底层实现原理是什么?  ◦ 解释 Golang 的 GMP 模型,要求画出 GMP 关联图。  ◦ channel 如何传递数据?    ▪ 手撕代码题:      ▪ 线程 A 通过 channel 传递数据给线程 B,B 计算后返回结果。三、编程手撕1. Channel 应用:  ◦ 实现 A 线程通过 channel 发送数据给 B 线程,B 计算后返回结果。四、其他问题1. 个人情况:  ◦ 是否接受调剂到武汉?  ◦ 项目是自学的吗?是否参加过培训班?  ◦ 认为自己写代码最多的语言是什么?大约多少行代码量?2. 闲聊环节:  ◦ 非技术性交流,涉及个人经历、职业规划等。面试时长• 总时长约 1 小时 10 分钟(19:10 - 20:20)。总结:map这块答得非常差,压根没打出来。拷打项目较多,面试官人很好。
点赞 评论 收藏
分享
评论
8
9
分享

创作者周榜

更多
牛客网
牛客企业服务