>>号外:关注“Java精选”公众号,菜单栏->聚合->干货分享,回复关键词领取视频资料、开源项目。

背景

平时工作中大家经常使用到boolean以及Boolean类型的数据,前者是基本数据类型,后者是包装类,为什么不推荐使用isXXX来命名呢?到底是用基本类型的数据好呢还是用包装类好呢?

例子

//1.其他非boolean类型
private String isHot;
public String getIsHot() {return isHot;
}
//2.boolean类型
private boolean isHot;
public boolean isHot() {return isHot;
}
//3.包装类型
private Boolean isHot;
public Boolean getHot() {return isHot;
}
//4.不以is开头
private boolean hot;
public boolean isHot() {return hot;
}
//5.包装类型
private Boolean hot;
public Boolean getHot() {return hot;
}

其实阿里巴巴发布的java开发手册中就写明了,强制规定,布尔类型的数据,无论是boolean还是Boolean都不准使用isXXX来命名

1)对于非boolean类型的参数,getter和setter方法命名的规范是以get和set开头

2)对于boolean类型的参数,setter方法是以set开头,但是getter方法命名的规范是以is开头

3)包装类自动生成的getter和setter方法的名称都是getXXX()和setXXX()

a. 其实javaBeans规范中对这些均有相应的规定,基本数据类型的属性,其getter和setter方法是getXXX()和setXXX,但是对于基本数据中布尔类型的数据,又有一套规定,其getter和setter方法是isXXX()和setXXX。但是包装类型都是以get开头

b. 这种方式在某些时候是可以正常运行的,但是在一些rpc框架里面,当反向解析读取到isSuccess()方法的时候,rpc框架会“以为”其对应的属性值是success,而实际上其对应的属性值是isSuccess,导致属性值获取不到,从而抛出异常。

总结

1、boolean类型的属性值不建议设置为is开头,否则会引起rpc框架的序列化异常。

2、如果强行将IDE自动生成的isSuccess()方法修改成getSuccess(),也能获取到Success属性值,若两者并存,则之后通过getSuccess()方法获取Success属性值。

工作中使用基本类型的数据好还是包装类好

咱们举个例子,一个计算盈利的系统,其盈利比例有正有负,若使用了基本类型bouble定义了数据,当RPC调用时,若出现了问题,本来应该返回错误的,但是由于使用了基本类型,返回了0.0,系统会认为没有任何问题,今年收支平衡,而不会发现其实是出现了错误。若使用了包装数据类型Double,当RPC调用失败时,会返回null,这样直接就能看到出现问题了,而不会因为默认值的问题影响判断。

其实阿里java开发手册中对于这个也有强制规定

因此,这里建议大家POJO中使用包装数据类型,局部变量使用基本数据类型。

作者:Apple_Web

blog.csdn.net/belongtocode/article/details/100635246

往期精选  点击标题可跳转

为什么 MyBatis 在国内非常流行,而国外 Java 工程师却不愿意使用?

IntelliJ IDEA 使用 spring Initializr 快速搭建 spring boot 项目遇到的坑

面试官问:为什么 MySQL 中的 utf8 并不是真正的 UTF-8 编码?

为什么程序员都说 SELECT * 效率低,那究竟是什么原因造成的?

厉害了,淘宝千万级并发,14次分布式架构演进

Spring Cloud 中 Zuul 网关到底有何牛逼之处?竟然这么多人在用!

一次神奇的 sql 查询经历,group by 慢查询优化记录

腾讯 Tendis 正式开源,兼容 Redis 协议企业级分布式高性能 KV 存储数据库

中国铁路 12306 网站的高并发架构带来的思考?研究分析后,果然超牛逼…

IDEA JetBrains 推出 Mono 编程字体真牛逼,更适合程序开发人员!

为什么阿里规范中要求代码禁用 static 修饰 SimpleDateFormat?

点个赞,就知道你“在看”!

为什么阿里巴巴禁止开发人员 boolean 类型变量使用 isXXX 来命名?相关推荐

  1. 为什么阿里巴巴禁止开发人员使用isSuccess作为变量名(修订版)

    在日常开发中,我们会经常要在类中定义布尔类型的变量,比如在给外部系统提供一个RPC接口的时候,我们一般会定义一个字段表示本次请求是否成功的. 关于这个"本次请求是否成功"的字段的定 ...

  2. 为什么阿里巴巴禁止开发人员使用isSuccess作为变量名

    在日常开发中,我们会经常要在类中定义布尔类型的变量,比如在给外部系统提供一个RPC接口的时候,我们一般会定义一个字段表示本次请求是否成功的. 关于这个"本次请求是否成功"的字段的定 ...

  3. mybaits 字段设置null_为什么阿里巴巴禁止开发人员修改serialVersionUID 字段的值

    简介: 介绍一下关于serialVersionUID .这个字段到底有什么用?如果不设置会怎么样?为什么<Java开发手册>中有那样的规定? 作者 | Hollis 序列化是一种对象持久化 ...

  4. python 什么可以作为变量名_为什么强烈禁止开发人员使用isSuccess作为变量名

    在日常开发中,我们会经常要在类中定义布尔类型的变量,比如在给外部系统提供一个RPC接口的时候,我们一般会定义一个字段表示本次请求是否成功的. 关于这个"本次请求是否成功"的字段的定 ...

  5. 为什么强烈禁止开发人员使用isSuccess作为变量名

    在日常开发中,我们会经常要在类中定义布尔类型的变量,比如在给外部系统提供一个RPC接口的时候,我们一般会定义一个字段表示本次请求是否成功的. 关于这个"本次请求是否成功"的字段的定 ...

  6. 为什么阿里巴巴不建议boolean类型变量用isXXX?

    背景: 平时工作中大家经常使用到boolean以及Boolean类型的数据,前者是基本数据类型,后者是包装类,为什么不推荐使用isXXX来命名呢?到底是用基本类型的数据好呢还是用包装类好呢? 例子: ...

  7. 为什么阿里巴巴禁止使用 Executors 创建线程池,而是通过 ThreadPoolExecutor 方式?...

    >>号外:关注"Java精选"公众号,菜单栏->聚合->干货分享,回复关键词领取视频资料.开源项目. 1. 通过Executors创建线程池的弊端 在创建线 ...

  8. 阿里巴巴Java开发手册的正确学习姿势是怎样的? | 文末送书

    △Hollis, 一个对Coding有着独特追求的人△ 这是Hollis的第 243篇原创分享 作者 l Hollis 来源 l Hollis(ID:hollischuang) 很多人都知道,阿里巴巴 ...

  9. 解读《阿里巴巴 Java 开发手册》背后的思考

    <阿里巴巴 Java 开发手册>是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断的完善,系统化地整理成册,反馈给广大开发者.现代软件行业的高速发展对开发 ...

最新文章

  1. 使用文本用户界面(NMTUI)进行网络配置
  2. python day1
  3. 玩cf出现outofmemory_完美解决outofmemory|Win7系统CF出现out of memory的解决方法
  4. 一个自动完成插件的类(TextBox 版)
  5. python基础语法-三大内建数据结构之列表(list)
  6. BZOJ3019 : [Balkan2012]handsome
  7. Java中的Enum(枚举)用法介绍
  8. jsr303 自定义消息_JSR 303从I18N属性文件加载消息
  9. 一个极其高效的虚拟机内存冗余消除机制:UKSM
  10. Cocoon概念性介绍
  11. http协议、cookie与session介绍
  12. 设计一个序列信号发生器, 产生序列信号1011101. 用74LS161和4选1数据选择器74153及必要的门电路实现
  13. VIIRS-NPP夜间灯光遥感数据下载和预处理
  14. java publish_java – 如何正确使用SwingWorker上的publish()和process()方法?
  15. 苹果手机导出照片到电脑上
  16. 50、ubuntu18.0420.04+CUDA11.1+cudnn11.3+TensorRT7.2/8.6+Deepsteam5.1+vulkan环境搭建和YOLO5部署
  17. 攀藤G5S数据位编码
  18. vi 从第几行到第几行 替换_vi命令加行号查找替换等命令
  19. 程序的编译(详解翻译环境)
  20. js如何把时间戳转化为日期

热门文章

  1. php语音信息,PHP代码示例_PHP语音验证接口 | 微米-中国领先的短信彩信接口平台服务商...
  2. [摘]四十二天学会英语的模范短文和经典100句
  3. linux内存测试工具memtest,内存检测工具Memtest使用方法(图文教程)
  4. linux添加ip白名单_centOS7 下利用iptables配置IP地址白名单的方法
  5. Python-Flask开发微电影网站(三)
  6. 2022年数字科技前沿应用趋势
  7. 网页加载慢,Initial connection请求偶尔过长
  8. 求第 N 个 斐波那契数的多种方法
  9. 升级android安全补丁,谷歌发布 2019 年 12 月的 Android 安全补丁
  10. 第七章-数据分析-数据透视表的应用