V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
librae
V2EX  ›  编程

变量起名: isBlablabla

  •  
  •   librae · 2017-02-06 10:40:18 +08:00 · 5706 次点击
    这是一个创建于 2607 天前的主题,其中的信息可能已经有所发展或是发生改变。

    见过有不少同学如是乎给变量起名字:

    比如 isRunning, isLogin, isBlabla

    元芳怎么看?

    34 条回复    2017-02-06 23:35:36 +08:00
    sudoz
        1
    sudoz  
       2017-02-06 10:41:25 +08:00
    布尔值的变量这么取名不觉得有什么问题
    qiayue
        2
    qiayue  
       2017-02-06 10:43:43 +08:00
    一看就知道是布尔值,而且知道 true 表示什么意思
    laoyur
        3
    laoyur  
       2017-02-06 10:48:15 +08:00   ❤️ 2
    你觉得有什么问题,不妨先说出来
    另外,是 blah
    coderluan
        4
    coderluan  
       2017-02-06 10:49:44 +08:00
    没毛病,用这个不光是同学水平的。
    letitbesqzr
        5
    letitbesqzr  
       2017-02-06 10:51:26 +08:00
    没毛病 一直这样
    learnshare
        6
    learnshare  
       2017-02-06 10:53:59 +08:00
    Login 应该是个动作, isLogin 表示状态就不太合适
    basefas
        7
    basefas  
       2017-02-06 10:56:33 +08:00
    语义明确,通俗易懂,大家统一标准就好,不要什么都上纲上线
    chairuosen
        8
    chairuosen  
       2017-02-06 10:58:12 +08:00
    你想怎么起名
    TakWolf
        9
    TakWolf  
       2017-02-06 11:00:07 +08:00
    猜测楼主的意思估计是,应该起名为 running , 这样 getter 跟 setter 就是: isRunning() setRunning()
    ytmsdy
        10
    ytmsdy  
       2017-02-06 11:00:25 +08:00
    当年有个同事,写代码的时候。变量都是用 x 来表示的,然后出现了诡异的画面
    x = 1
    xx = 'hello world'
    xxx = 2.56
    xxxx = True

    所以江湖人称’ x 爷‘
    dorentus
        11
    dorentus  
       2017-02-06 11:08:38 +08:00
    isLoggedIn
    viator42
        12
    viator42  
       2017-02-06 11:13:41 +08:00
    bool 值自动生成的 get 方法就是 isXxx(),某种意义上说是钦定的命名法
    loading
        13
    loading  
       2017-02-06 11:14:32 +08:00 via Android   ❤️ 5
    变量名这些,可以参考:
    https://unbug.github.io/codelf/
    haogefeifei
        14
    haogefeifei  
       2017-02-06 11:24:59 +08:00
    少年。。。这是钦定的命名法。。。。
    otakustay
        15
    otakustay  
       2017-02-06 11:28:58 +08:00   ❤️ 1
    isLogin => isSignedIn
    isRunning 也不是很好,不知道 running 的是什么,阶有非常明确的上下文,所以 isXxxProcessRunning 更好
    barbery
        16
    barbery  
       2017-02-06 11:31:49 +08:00
    @loading 居然支持中文搜,有点意思,哈哈哈
    sethverlo
        18
    sethverlo  
       2017-02-06 11:41:28 +08:00
    ruby 大法好。。可以用 running? login?
    akring
        19
    akring  
       2017-02-06 11:46:00 +08:00
    老铁没毛病,双击 666

    苹果在 Swift3 里都把原来的 hidden 改成 isHidden 的命名方式了
    techmoe
        20
    techmoe  
       2017-02-06 11:50:58 +08:00 via Android
    登录用 hasLogin 比较贴切吧
    librae
        21
    librae  
    OP
       2017-02-06 12:07:30 +08:00 via iPhone
    @TakWolf 你咋知道,哈哈

    主要是感觉有强迫症,看到读起来不顺口的名字会有生理反应,比如汗毛会立起来

    🙄
    librae
        22
    librae  
    OP
       2017-02-06 12:09:42 +08:00 via iPhone
    @laoyur 谢指出错误
    librae
        23
    librae  
    OP
       2017-02-06 12:11:50 +08:00 via iPhone
    isRunning 还蛮顺溜的, is 动词就昏厥
    expkzb
        24
    expkzb  
       2017-02-06 12:14:59 +08:00
    不仅是 isXXX 吧,还有比如 shouldXXX, hasXXX
    librae
        25
    librae  
    OP
       2017-02-06 12:59:11 +08:00
    @sudoz
    @qiayue

    确实可以理解为一种“标记”用来标识 **boolean**
    实在需要的时候我一般是用 bRunning , js 里用驼峰, c 里不喜欢,所以就 b_running 或者就直接 running 了。

    @coderluan

    其实我也是工作中才注意到的,以前当同学的时候编译通过就万事大吉了

    @ytmsdy

    天下之大,哈哈哈...

    @loading

    感谢分享

    @letitbesqzr @learnshare @basefas @chairuosen

    可能是因为以前在 linux kernel 里面转悠多了,再加上自己写习惯了,所以就有了条件反射的生理反应。
    举个栗子,譬如:

    http://lxr.free-electrons.com/source/include/linux/sched.h#L1465

    ```
    1456 /* Track pages that require TLB flushes */
    1457 struct tlbflush_unmap_batch {
    1458 /*
    1459 * Each bit set is a CPU that potentially has a TLB entry for one of
    1460 * the PFNs being flushed. See set_tlb_ubc_flush_pending().
    1461 */
    1462 struct cpumask cpumask;
    1463
    1464 /* True if any bit in cpumask is set */
    1465 bool flush_required;
    1466
    1467 /*
    1468 * If true then the PTE was dirty when unmapped. The entry must be
    1469 * flushed before IO is initiated or a stale TLB entry potentially
    1470 * allows an update without redirtying the page.
    1471 */
    1472 bool writable;
    1473 };
    ```

    这里有两个 **bool**

    `bool flush_required;`
    `bool writable;`

    为什么前面不带 be 动词呢?
    因为 `flush_required` 和 `writable` 本身就已经能表达是非两种状态了,带 be 的话感觉多余。

    总而言之,习惯性使然,主要想了解下除了自己以外,别人是否也关注过这些其实没卵用的点。
    librae
        26
    librae  
    OP
       2017-02-06 13:00:11 +08:00
    回复里不能 markdown ?算鸟不改了
    SourceMan
        27
    SourceMan  
       2017-02-06 13:09:29 +08:00
    觉得不爽?小组里面你把这个规范强制要求统一起来就得啦!提交错罚 10 块活动经费
    librae
        28
    librae  
    OP
       2017-02-06 13:20:50 +08:00
    @SourceMan 我是被统一的,正打算揭竿起义 🎃
    Pastsong
        29
    Pastsong  
       2017-02-06 13:31:23 +08:00
    完全不爽 bRunning 这种写法...根本不可读...来, 战个痛
    lifesimple
        30
    lifesimple  
       2017-02-06 14:00:02 +08:00
    还好吧 bool 类型的话 或者后面加个 state isLoginState
    grayon
        31
    grayon  
       2017-02-06 14:14:03 +08:00
    @property (nonatomic, assign, getter=isEnabled) BOOL enabled;
    maplerecall
        32
    maplerecall  
       2017-02-06 14:28:17 +08:00
    之前总觉得 isLogin 哪里怪怪的,现在一般用 isLoggedIn ……
    rockyou12
        33
    rockyou12  
       2017-02-06 16:52:06 +08:00
    isLogin 好像不合语法,但是可以放弃思考啊,取名字很伤神的
    mingyun
        34
    mingyun  
       2017-02-06 23:35:36 +08:00
    @loading 这个不错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   940 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 20:52 · PVG 04:52 · LAX 13:52 · JFK 16:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.