7911364440
V2EX  ›  Java

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

  •  2
     
  •   7911364440 · Nov 26, 2021 · 10986 views
    This topic created in 1804 days ago, the information mentioned may be changed or developed.
    74 replies  •  2021-12-14 14:39:49 +08:00
    Quarter
    Quarter
    Nov 26, 2021 via iPhone
    1
    can if able 这些?
    l1203
    l1203
    Nov 26, 2021❤️2
    2
    谁定的规则你去问谁啊。楼上告诉你这些,等会又不让用你怎么办?
    dream4ever
    dream4ever
    Nov 26, 2021❤️6
    3
    用 are
    2i2Re2PLMaDnghL
    2i2Re2PLMaDnghL
    Nov 26, 2021
    4
    用 property 开头(
    kujio
    kujio
    Nov 26, 2021❤️21
    5
    很简单,属性名后面加问号就行,
    isVisiable => visiable?
    isSelected => selected?
    ...
    wangkun025
    wangkun025
    Nov 26, 2021❤️1
    6
    shifou_
    zjsxwc
    zjsxwc
    Nov 26, 2021
    7
    用 be
    zcljy
    zcljy
    Nov 26, 2021❤️2
    8
    nengxingbu_add
    newbieRenew
    newbieRenew
    Nov 26, 2021 via iPhone
    9
    i_visible
    constexpr
    constexpr
    Nov 26, 2021 via Android
    10
    用 was
    chendy
    chendy
    Nov 26, 2021
    11
    把 is 去掉就完事了呗
    ReysC
    ReysC
    Nov 26, 2021❤️2
    12
    areYourOk?
    看到说 are 的时候,突然想写这个
    7911364440
    7911364440
    OP
    Nov 26, 2021
    13
    @l1203 is 开头的变量序列化的时候确实会有问题
    zzl22100048
    zzl22100048
    Nov 26, 2021❤️1
    14
    为啥要 is 开头? boolean 变量用形容词
    wolfie
    wolfie
    Nov 26, 2021
    15
    实体用 Boolean ,别用 boolean 就没这 d 事。
    earneet
    earneet
    Nov 26, 2021
    16
    就简单把 is 去掉就行吧
    ElegantOfKing
    ElegantOfKing
    Nov 26, 2021
    17
    checkIf
    marffin
    marffin
    Nov 26, 2021
    18
    用 is 开头明显是布尔变量,用 b 开头就好了
    cpstar
    cpstar
    Nov 26, 2021
    19
    burangIsXXX
    rm0gang0rf
    rm0gang0rf
    Nov 26, 2021
    20
    是,不是
    Kimen
    Kimen
    Nov 26, 2021❤️1
    21
    直接不加 is_deleted ,就是 deleted
    jmjgeminix
    jmjgeminix
    Nov 26, 2021❤️3
    22
    启用拼音命名法
    IsDeleted -> 删除标志 -> scbz
    declandragon
    declandragon
    Nov 26, 2021
    23
    cl control 的缩写,万物皆可控制。
    felixcode
    felixcode
    PRO
    Nov 26, 2021
    24
    toBeOrNotToBe
    dddd1919
    dddd1919
    Nov 26, 2021
    25
    匈牙利命名法,bool 值统一 b 开头,b_deleted / bDeleted
    AllanAG
    AllanAG
    Nov 26, 2021
    26
    根据语义用过 has/can
    xz410236056
    xz410236056
    Nov 26, 2021
    27
    @kujio #5 swift 中属性跟? 有特殊含义
    cnit
    cnit
    Nov 26, 2021❤️1
    28
    ``` xxx_flag ```
    ``` xxxFlag```
    jackmod
    jackmod
    Nov 26, 2021
    29
    isCondtion -> conditionIsTrue (别信)
    boolean 的 getter 就是 isCondition()
    94
    94
    Nov 26, 2021❤️1
    30
    直接去掉 is 不就可以了么?
    boris93
    boris93
    Nov 26, 2021 via iPhone❤️8
    31
    isChanged -> changeLeMei
    isVisible -> visibleBu
    MonkeyJon
    MonkeyJon
    Nov 26, 2021
    32
    is_deleted(数据库)->deleted(实体)
    murmur
    murmur
    Nov 26, 2021❤️2
    33
    isChanged => GaiLeMe?
    isVisible => nengKanJianMe?
    isSelected => xuanZhongLeMe?
    wdwwtzy
    wdwwtzy
    Nov 26, 2021
    34
    可以尝试以下 C#,C#允许,还有真属性....
    public bool IsXXX {get;set;}
    marcong95
    marcong95
    Nov 26, 2021
    35
    iAmABooleanTypedPropertyForIndicatingXXXXXXX
    Kilerd
    Kilerd
    Nov 26, 2021 via iPhone
    36
    因为 lombok 对于 boolean 生成的 getter 就是以 is 开头的,所以属性直接用形容词就好了
    sivl6p
    sivl6p
    Nov 26, 2021
    37
    为啥不让用 is ,能说具体原因么。 你们用的什么语言,哪个序列化库
    wangchonglie
    wangchonglie
    Nov 26, 2021
    38
    @MonkeyJon #32 请问这个实体应该怎么理解呢
    zhujq
    zhujq
    Nov 26, 2021
    39
    我用 am,你用 are,is 连着他,她,它
    luman
    luman
    Nov 26, 2021
    40
    @kujio 貌似不让包含问号。

    兄台你看我的建议如何:
    isVisiable => visiable 吗
    isSelected => selected 吗
    lyz1990
    lyz1990
    Nov 26, 2021
    41
    为啥不能 is ?
    h82258652
    h82258652
    Nov 26, 2021
    42
    shifouVisible
    手动狗头
    PerFectTime
    PerFectTime
    Nov 26, 2021
    43
    凭什么
    jinhan13789991
    jinhan13789991
    Nov 26, 2021
    44
    换成 if 开头
    isVisiable => ifVisiable
    isSelected => ifSelected
    meeop
    meeop
    Nov 26, 2021
    45
    感觉 are 最万能
    不能用 selected 的原因:不是所有布尔变量都是一种状态 /动作,比如 isVip,变量名叫 vip 就很模糊
    不能用 has,can 的原因,不是所有布尔都在表达是否拥有 /能否的含义,例子同 isVip

    中文含义是否 xxx 最万能
    对应到英文就是 isXxx
    坑爹的事 java 规范里会自作聪明的把 isxxx 认为是布尔值,生成 getter 方法的时候去掉 is
    那只能用 are 了
    jk1030
    jk1030
    Nov 26, 2021
    46
    我一般是用 FLag
    bytewalk
    bytewalk
    Nov 26, 2021
    47
    @kujio #5 你确定这样命名是合法的吗?
    vate32
    vate32
    Nov 26, 2021
    48
    不明白为什么不让用的老哥可以看下这篇文章: https://www.cnkirito.moe/project-rules-2/
    yuezk
    yuezk
    Nov 26, 2021
    49
    @poorcai #47 个人推荐 #5 ,感觉添加 is 有点冗余。visible 和 selected 本身就有两个状态。类比中文就是:「可见的」和「是可见的」「已选中的」和「是已选中的」,把「是」去掉问题也不影响理解。
    pkoukk
    pkoukk
    Nov 26, 2021❤️2
    50
    一看标题就知道是坑爹的 java 。。
    其它哪个语言都没这奇怪的毛病
    maocat
    maocat
    Nov 26, 2021 via iPhone
    51
    notIs 负负得正
    TomVista
    TomVista
    Nov 26, 2021
    52
    美食供应商
    TomVista
    TomVista
    Nov 26, 2021
    53
    @TomVista 抱歉,请忽视这条
    ttys001
    ttys001
    Nov 26, 2021
    54
    beVisible
    beDeleted
    dfourc
    dfourc
    Nov 26, 2021
    55
    @jmjgeminix #22 血压上来了
    JamesR
    JamesR
    Nov 26, 2021
    56
    只有 Java 才有这个问题。
    moqimoqide
    moqimoqide
    Nov 27, 2021 via iPhone❤️2
    57
    布尔值命名


    给布尔变量赋子隐含“真 /假”含义的名宇

    像 done 和 success 这样的名字是很不错的布尔变量名,因为其状态要么是 true ,要么足 false:某件事情完成了或者没有完成:成功或者失败。另一方面,像 status 和 sourceFile 这样的名字却是很糟的布尔变量名,因为它们没有明确的 true 或者 false 。status 是 true 反映的是什么含义?它表明某件事情拥有一个状态吗?每件事都有状态。true 表明某件事情的状态是 OK 吗?或者说 false 表明没有任何错误吗?对于 status 这样的名字,你什么也说不出来。

    为了取得更好的效果,应该把 status 替换为类似于 error 或者 statusOK 这样的
    名字,同时把 sourceFile 替换为 sourceFileAvailable 、sourceFileFound ,或者其他能
    体现该变量所代表含义的名字。

    有些程序员喜欢在他们写的布尔变量名前加上 Is 。这样,变量名就变成了
    个问题:isdone? isError? isFound? isProcessingComplete ?用 true 或 false 回答问题
    也就为该变量给出了取值。这种方法的优点之一是它不能用于那些模糊不清的名
    字:isStatus ?这毫无意义。它的缺点之一是降低了简单逻辑表达式的可读性:if
    (isFound)的可读性要略差于 if(found).

    使用肯定的布尔变量名

    否定的名字如 notFound 、notdone 以及 notSuccessful 等较难阅读,特别是如果它们被求反:if not notFound, 这样的名字应该替换为 found 、done 或者 processingComplete ,然后再用适当的运算符求反。如果你找到了想找的结果,那么就可以用 found 而不必写双重否定的 not notFound.
    bravejoe
    bravejoe
    Nov 27, 2021
    58
    主要还是因为序列化的原因
    ericgui
    ericgui
    Nov 27, 2021 via iPhone
    59
    @7911364440 为什么?求解。is 就是俩普通字母而已,和 abc 有什么区别么?
    koebehshian
    koebehshian
    Nov 27, 2021
    60
    方法名用动词,属性名用名词或形容词
    hewiefsociety
    hewiefsociety
    Nov 27, 2021
    61
    用 sb:)
    opengps
    opengps
    Nov 27, 2021 via Android
    62
    ItIs
    wanguorui123
    wanguorui123
    Nov 27, 2021
    63
    can has
    liuxu
    liuxu
    Nov 27, 2021
    64
    谁要求的,让他换行吧
    liuxu
    liuxu
    Nov 27, 2021
    65
    @liuxu 我是说让他换行业,不是\n
    qbqbqbqb
    qbqbqbqb
    Nov 27, 2021
    66
    @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
    7gugu
    Nov 28, 2021 via iPhone
    67
    i_s 属性名
    MonkeyJon
    MonkeyJon
    Nov 29, 2021❤️1
    68
    @wangchonglie 数据库对应 java 中的操作对象,平时叫实体,model ,pojo ,entity 等
    siweipancc
    siweipancc
    Nov 30, 2021 via iPhone
    69
    经常在 jni 代码里看到 bool_active 的写法,不过我倾向于形容词 actived
    evoluc97
    evoluc97
    Dec 1, 2021
    70
    @qbqbqbqb 其实如果实体类不用 boolean 类型
    直接用 int 的 1 和 0 表示 就可以用 is 字段开头把
    Xinghx
    Xinghx
    Dec 1, 2021
    71
    在 is 前面再加个前缀
    qbqbqbqb
    qbqbqbqb
    Dec 1, 2021
    72
    @evoluc97 也可以手写 getter 和 setter ,比如如果字段名叫 isXxx ,手写了 getIsXxx 和 setIsXxx 是没有问题的,框架能正确识别(一般的框架都是优先找 get 前缀的 getter ,找不到再找 is 前缀的 getter )。但是这样不符合规范,不好维护。
    一般大型项目开发的时候都是 IDE 自动生成符合规范的 getter/setter ,或者用 Lombok 之类的工具,这些工具会自动去掉多余的 is 导致后续容易出问题。
    alo1719
    alo1719
    Dec 1, 2021
    73
    我个人是用 if 代替 is ,例如 ifEffective 。其实最简洁易懂的是在 boolean 值后面加问号,例如 effective? (读作 effective ha?),可惜 Java Bean 里没法这样命名。
    Jtyczc
    Jtyczc
    Dec 14, 2021
    74
    我认为可以用 state 、flag
    deleted_state:[删除状态:0->未删除,1->已删除]
    enable_state:[开启状态:0->未开启,1->已开启]
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5189 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 199ms · UTC 06:37 · PVG 14:37 · LAX 22:37 · JFK 01:37
    ♥ Do have faith in what you're doing.