属性名不让用 is 开头,应该用什么?

2021-11-26 14:31:32 +08:00
 7911364440
9050 次点击
所在节点    Java
74 条回复
hewiefsociety
2021-11-27 13:56:20 +08:00
用 sb:)
opengps
2021-11-27 15:27:49 +08:00
ItIs
wanguorui123
2021-11-27 21:32:43 +08:00
can has
liuxu
2021-11-27 21:44:39 +08:00
谁要求的,让他换行吧
liuxu
2021-11-27 21:49:47 +08:00
@liuxu 我是说让他换行业,不是\n
qbqbqbqb
2021-11-27 23:54:38 +08:00
@ericgui 和 Java 中一些序列化框架的实现有关。
Java 里按照惯例用 getter/setter 方法读写对象属性,字段 xxx 的 getter 和 setter 应当取名为 getXxx()和 setXxx(),如果 xxx 是 boolean 类型的话 getter 应当取名为 isXxx()。
但如果字段名称已经叫 isXxx 了,getter 总不能取名叫 isIsXxx()这种不伦不类的名字吧,于是这种情况 getter 仍然取名为 isXxx()。

然后有些序列化框架是根据 getter 的名字反推字段名,一般情况下字段存到文件里名字都是一致的,但是如果字段名是 isXxx 的话,经过上面一番操作之后存到文件里的字段名就变成不带 is 的 xxx 了,这种不一致会给后续的开发带来麻烦。所以说属性名不能用 is 开头。

解决方法也很简单,直接用形容词就行了,比如 isVisible ,字段名直接叫 visible 即可,一般也不影响可读性。
7gugu
2021-11-28 00:46:43 +08:00
i_s 属性名
MonkeyJon
2021-11-29 16:08:32 +08:00
@wangchonglie 数据库对应 java 中的操作对象,平时叫实体,model ,pojo ,entity 等
siweipancc
2021-11-30 11:12:59 +08:00
经常在 jni 代码里看到 bool_active 的写法,不过我倾向于形容词 actived
evoluc97
2021-12-01 10:49:40 +08:00
@qbqbqbqb 其实如果实体类不用 boolean 类型
直接用 int 的 1 和 0 表示 就可以用 is 字段开头把
Xinghx
2021-12-01 11:17:59 +08:00
在 is 前面再加个前缀
qbqbqbqb
2021-12-01 12:00:26 +08:00
@evoluc97 也可以手写 getter 和 setter ,比如如果字段名叫 isXxx ,手写了 getIsXxx 和 setIsXxx 是没有问题的,框架能正确识别(一般的框架都是优先找 get 前缀的 getter ,找不到再找 is 前缀的 getter )。但是这样不符合规范,不好维护。
一般大型项目开发的时候都是 IDE 自动生成符合规范的 getter/setter ,或者用 Lombok 之类的工具,这些工具会自动去掉多余的 is 导致后续容易出问题。
alo1719
2021-12-01 15:09:06 +08:00
我个人是用 if 代替 is ,例如 ifEffective 。其实最简洁易懂的是在 boolean 值后面加问号,例如 effective? (读作 effective ha?),可惜 Java Bean 里没法这样命名。
Jtyczc
2021-12-14 14:39:49 +08:00
我认为可以用 state 、flag
deleted_state:[删除状态:0->未删除,1->已删除]
enable_state:[开启状态:0->未开启,1->已开启]

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/818150

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX