Java 开发千万别给布尔变量加 is 前缀!很容易背锅
前几天我在改一个老项目的代码。 本来只是加一个很小的判断结果一行代码让我卡了 10 分钟。if (user.isDeleted()) { // ... }我心里想deleted是已经被删了还是要不要删除于是我顺手点进了User类。private Boolean isDeleted;再往下翻方法的时候我发现有的地方在用user.isDeleted()有的地方却在用user.getIsDeleted()这时候问题就来了到底哪个才是规范写法那布尔类型的变量到底要不要加is前缀一、入门级的写法如果你是刚接触 Java 不久十有八九会这样写private boolean isSuccess; private boolean isDeleted; private boolean isEnable;原因很简单布尔值只有true / false加个is一看就知道是不是逻辑上完全没问题而且 IDE、编译器也不会报错。那问题到底出在哪二、场景我给你还原一个开发中的场景。1️⃣ 定义阶段一切都很合理private boolean isDeleted;语义清晰是否已删除没毛病。2️⃣ 生成 getter / setter用 IDE 回车生成getter / setter结果生成了这些方法你发现了吗getter 叫getDeleted()setter 叫setDeleted()字段却是isDeleted已经开始不统一了。3️⃣ 一旦字段是 Boolean不是 boolean代码会变得更神奇。private Boolean isDeleted;有些 IDE 会生成public Boolean getIsDeleted() { ... } public void setIsDeleted(Boolean isDeleted) { ... }于是项目里开始出现三种名字isDeleted字段isDeleted()方法getIsDeleted()方法这时候你再接上MyBatis / Jackson / Swagger / Lombok乐子就来了。三、为什么框架不喜欢 is 前缀1️⃣ Java Bean 规范本身就有点偏执在 Java Bean 规范里boolean 类型的 getter可以是isXxx()但Xxx 本身不应该再带 is规范推荐的是private boolean deleted; public boolean isDeleted() { ... }而不是private boolean isDeleted; public boolean isIsDeleted() { ... }虽然 IDE 会帮你兜底但规范层面就是反着来的。2️⃣ JSON 映射时名字会偷偷变看一个常见例子private boolean isDeleted;用 Jackson 转 JSON结果可能是{ deleted: true }也可能是{ isDeleted: true }取决于字段、getter 名、注解和Jackson 版本同一个字段在不同项目里表现不一样。这不是 bug这是规范 约定 实现差异的组合。3️⃣ 数据库字段更尴尬数据库里你一般会这样建字段is_deleted tinyint(1)Java 里你写private Boolean isDeleted;ORM 映射时有人映射is_deleted → isDeleted有人映射is_deleted → deleted团队里如果没有统一约定很快容易会乱。四、is会让语义变模糊这是我个人觉得最致命的一点。来看这几个变量名isDeleted isEnable isSuccess isUsed你仔细想一想isDeleted true已删除还是需要删除isEnable false当前不可用还是不允许启用isSuccess false操作失败还是还没执行is很容易让状态和动作意图混在一起。而如果换成这样deleted enabled success used搭配方法if (user.isDeleted()) { ... } if (!account.isEnabled()) { ... }语义反而更自然。五、推荐的写法布尔命名其实可以分三类。1、表示状态的这种是最标准、最推荐的写法。private boolean deleted; private boolean enabled; private boolean active; private boolean locked;对应方法public boolean isDeleted() { ... } public boolean isEnabled() { ... }特点字段是“状态”getter 用isXxx()读起来像一句自然语言比如if (user.isDeleted())翻译成中文就是用户是删除状态吗非常顺。2、表示是否拥有的用has前缀有些布尔值表达的不是状态而是是否拥有某种东西。比如private boolean hasPermission; private boolean hasChildren; private boolean hasLogin;getterpublic boolean hasPermission() { ... } public boolean hasChildren() { ... }这种语义就更自然if (user.hasPermission())读起来就是用户有没有权限比if (user.isHasPermission())自然太多了。3、表示能力的用can前缀如果表达的是能不能做某件事用can也比is更清晰。private boolean canEdit; private boolean canDelete; private boolean canExport;使用if (user.canDelete())这时候它表达的不是状态而是能力判断。和if (user.isDelete())完全不是一个层级的语义。六、不推荐的写法private boolean isDeleted; private Boolean isEnable; private boolean isHasPermission; private boolean isCanEdit;问题在于语义重复getter 容易变成奇怪形式框架解析可能不一致可读性下降尤其是isHasPermission isCanEdit读起来非常的拧巴。七、之前经历以前一个项目里有两个字段private Boolean isValid; private Boolean valid;一个是历史字段一个是新字段。代码里经常出现if (user.isValid()) { ... } if (user.getIsValid()) { ... }新来的同事问我这两个有什么区别我当场沉默了 3 秒。不是新同事不行是命名真的有问题。

相关新闻

CSS中的“百分比”边距到底是怎么算的?

CSS中的“百分比”边距到底是怎么算的?

点赞 关注 收藏 学会了 整理了一个「前端调试小专栏」,有兴趣的工友可以关注一下 👉 《前端Debug不求人》 在刚开始写 CSS 时,我们经常会用到百分比(%)来实现响应式布局。但在这个过程中,有一个非常经典…

2026/7/5 11:44:45 阅读更多 →
java八股文(全网最全)

java八股文(全网最全)

1.线程有几种状态,产生的条件是什么 新建状态(New) :线程对象被创建后,就进入了新建状态。例如,Thread thread new Thread()。 (2)就绪状态(Runnable): 也被称为“可执行状态”。线程对象被创建后&#xf…

2026/7/6 1:24:43 阅读更多 →
SEMI-S2认证的超薄晶圆Aligner有适配翘曲晶圆的型号吗?

SEMI-S2认证的超薄晶圆Aligner有适配翘曲晶圆的型号吗?

在半导体制造中,晶圆翘曲是常见现象,尤其是150um以下的超薄晶圆,在切割、研磨后容易因内应力释放产生1.5mm甚至更大的翘曲。这时候,普通aligner可能因定位基准偏移导致检测误差,而SEMI-S2认证的超薄晶圆aligner是否有适…

2026/5/17 8:01:13 阅读更多 →

最新新闻

企业AI规模化落地面临的接入无序、成本失控、安全盲区交织

企业AI规模化落地面临的接入无序、成本失控、安全盲区交织

随着AI深度融入企业业务流程,知识库、Copilot、智能客服等AI应用遍地开花,不同部门对模型能力的诉求也变得五花八门:研发部要用AI辅助生成代码、进行漏洞调试,强烈要求接入满血大模型;客服部需要处理大量客户咨询&…

2026/7/7 14:14:51 阅读更多 →
【爱马仕智能体】Hermes 自动化工具落地教程,轻量化安装包适配普通家用电脑(含安装包)

【爱马仕智能体】Hermes 自动化工具落地教程,轻量化安装包适配普通家用电脑(含安装包)

Windows 搭建 Hermes 环境步骤繁琐?轻量化整合包快速完成本地运行 不少使用者想要体验 Hermes 智能代理工具,但手动部署环节总会被环境配置问题卡住。 单独下载各类依赖组件、调试系统运行环境、修正文件路径异常,同时还会遇到命令执行失败、…

2026/7/7 14:12:51 阅读更多 →
高压隔离设计:ISOM8710光耦仿真器与MK60DN512VLQ10 MCU应用指南

高压隔离设计:ISOM8710光耦仿真器与MK60DN512VLQ10 MCU应用指南

1. 高压隔离设计中的关键器件选型在工业控制、电力电子和医疗设备等高压应用场景中,安全隔离是系统设计的首要考虑因素。ISOM8710作为TI推出的高速光耦仿真器,与NXP的MK60DN512VLQ10微控制器组合,能够构建可靠的高压隔离解决方案。这套组合特…

2026/7/7 14:12:51 阅读更多 →
SIP协议DoS攻击原理与防御:从InviteFlood实战到纵深防护体系

SIP协议DoS攻击原理与防御:从InviteFlood实战到纵深防护体系

1. 项目概述:从攻击视角审视SIP协议安全最近在复现和测试一些经典的协议层攻击手法,inviteflood这个工具反复被提及。它虽然年头不短,但因其针对的是SIP(Session Initiation Protocol,会话初始协议)这一广泛…

2026/7/7 14:10:50 阅读更多 →
LVI-SAM 多传感器标定实战:3步完成相机-激光雷达-IMU外参对齐

LVI-SAM 多传感器标定实战:3步完成相机-激光雷达-IMU外参对齐

LVI-SAM 多传感器标定实战:3步完成相机-激光雷达-IMU外参对齐在机器人自主导航与SLAM系统中,多传感器融合已成为提升系统鲁棒性和精度的关键手段。LVI-SAM作为激光-视觉-惯性紧耦合SLAM框架的代表,其性能高度依赖于各传感器外参的准确性。本文…

2026/7/7 14:10:50 阅读更多 →
MC6470与MK24FN1M0VDC12的硬件协同与6DOF数据融合实战

MC6470与MK24FN1M0VDC12的硬件协同与6DOF数据融合实战

1. MC6470与MK24FN1M0VDC12的硬件协同架构解析 MC6470作为一款6DOF(六自由度)惯性测量单元(IMU),其核心价值在于集成了三轴加速度计和三轴陀螺仪,能够实时捕捉物体的线性加速度和角速度变化。在实际项目中,我通常将其采…

2026/7/7 14:08:49 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻