大佬们, 关于 Java 后端空判断

vyuai · 2024-10-25 03:36:41 · 256 次点击
大佬们, 这种过滤是不是多余的啊, 数据库设计了部门 id 不能为空, 前端也加了校验, 后端还要进行多步的空判断吗, 有点晕了, 一般在什么情况下做这种多步的空判断啊
https://imgur.com/5RXY9q2
以下图片是改造的, 会有什么问题嘛, 是不是到这种程度就可以了
https://imgur.com/jWhJzYu

主要为了学习代码编码风格和规范, 看哪些开源项目比较好啊, 或者看什么别的东西

目前看的是 SmartAdmin 这个开源项目学习, 大佬们有了解的嘛, 看哪位作者的风格比较好呢, 若依实在不喜欢, 目前觉得这个 SmartAdmin 对我帮助很大

补一个问题 Java 后端大部分人都说 CRUD, 企业中 CRUD 到底是什么样子的, 一般一个后端会分多少个表啊, 或者分多少个模块啊, 学到什么程度可以, 一直没有概念, 距离辞职, 已经学习一年了
举报· 256 次点击
登录 注册 站外分享
19 条回复  
cheng6563 小成 2024-10-25 09:23:15
产生 Error 都是底层问题,你写的 Java 代码无法处理这种问题,一般出现 Error 是建议直接重启进程。
sadwxds 小成 2024-10-25 09:21:01
一开始我以为是接口对请求参数的非空校验,那这个是很有必要的,避免接受到空值导致后续的业务逻辑出现异常。
但是你图片中的代码,是对数据库返回结果进行非空的过滤,这是我无理解的。

既然是对数据库的查询,那所有的过滤都应该通过 SQL 语句进行,可以利用索引,减少 IO ,分页功能也才准确。

实际开发的时候,因为时间精力的问题,也很难对所有的地方进行非空校验,要不就不会有那么多空指针异常了。
一般情况下,对于服务外输入的值,可以认为是不可信的,做好非空和其他的参数校验。

数据库这种和服务绑定的,可以通过字段属性设置为非空,我是觉得没必要程序里面再加个非空判断。
249239432 小成 2024-10-25 09:19:25
前端能校验?有人直接走协议提交参数到后端呢?
DreamingCTW 小成 2024-10-25 09:18:07
没具体看楼主写的内容,单从前后端的 null 判断来说,我不管前端有没有判断 null ,我后端都会判断。因为正常用户会走你的前端页面,非正常用户是直接调用接口的。
hiveex 该用户已被删除 2024-10-25 09:14:30
提示: 作者被禁止或删除 内容自动屏蔽
spritecn 初学 2024-10-25 09:12:48
你定义一个字符串参数,前端传"NULL"串,""串,还有"undefind"串都是常有的事
wolfie 初学 2024-10-25 08:54:49
这不是可选过滤,这个就不应该过滤。(除非在别人代码加逻辑怕出问题)

万一有人把映射改了,这个字段查不到值了,要第一时间抛出异常,而不是业务逻辑错误。
cowcomic 小成 2024-10-25 08:53:31
你这套逻辑,加不加这个判空都可以
我的建议是如果你的业务逻辑需要这里的 id 不能为空,就自己加上,不要把这个控制交给数据库
毕竟这个字段不是主键,有可能后续因为什么原因就改成可为空了
yuanxiaosong 小成 2024-10-25 08:50:32
1. 前端约等于用户输入,永远不要相信用户的输入是正确的,参见测试工程师那个段子;
2. Throwable 有两个子类,Error 和 Exception ,打开 Error 的源文件,注释上明确写了:……because most applications should not try to catch it.(翻译一下:因为大多数应用程序都不应该尝试捕获它),通常我们认为是一些硬件上或者 JVM 的问题,此时程序已经不能正常运行,事务回滚也没什么意义了。
dddd1919 初学 2024-10-25 08:45:48
前端校验是改善用户体验,可选
后端校验是系统逻辑处理,必选
12下一页
返回顶部