V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zhuzhibin
V2EX  ›  问与答

老哥们定义变量名遵循啥规范?

  •  
  •   zhuzhibin · 2021-03-06 12:42:00 +08:00 · 2078 次点击
    这是一个创建于 1359 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我一般是直接语义化英文翻译然后驼峰或者下划线拼接,然后编程上结合一些代码规范,大家可以一起来分享一下

    例如定义:检查用户是否关注过公众号

    
    const checkCustomerHasFollowedOfficialAccount = true;
    
    bolean checkCustomerHasFollowedOfficialAccount = true
    
    $checkCustomerHasFollowedOfficialAccount = true;
    
    
    

    上面这种可能比较语义化,其他一些没有太语义化的你们怎么搞?例如定义一个变量:用户完成的任务总数量对应的奖品或者其他一些有的没的

    强调一下啊,仅仅是作为分享贴,以和为贵,大家如果有好的一些编程规范可以分享出来,大家一起受用~

    例如 PSR 规范 https://www.php-fig.org/psr/

    第 1 条附言  ·  2021-03-06 13:21:18 +08:00
    我好像说错了哈哈

    检查用户是否关注过公众号,我上面说的应该是方法名,而不是变量名

    ```
    定义方法:一般是动词+名词
    const checkCustomerHasFollowedOfficialAccount = ()=>{
    //todo
    return true;
    } ;

    定义变量,下面老哥有人说,一般是名词:

    const isFollowedOfficialAccount = true;

    ````
    27 条回复    2021-03-06 20:33:23 +08:00
    superrichman
        1
    superrichman  
       2021-03-06 12:51:31 +08:00 via iPhone
    这名字太长了,要我就写 isSubscribed
    zhuzhibin
        2
    zhuzhibin  
    OP
       2021-03-06 12:55:36 +08:00
    @superrichman subscribe 是订阅吧 你要是简写也应该是 is_follow ?
    superrichman
        3
    superrichman  
       2021-03-06 13:10:13 +08:00
    @zhuzhibin 我是习惯对象是人就 follow, 不是人就 subscribe
    superrichman
        4
    superrichman  
       2021-03-06 13:12:28 +08:00
    @superrichman 不过也没多大差别, 口语上也会混着用
    PerFectTime
        5
    PerFectTime  
       2021-03-06 13:15:05 +08:00
    随心所欲即可,记得住就可以
    AllenHua
        6
    AllenHua  
       2021-03-06 13:16:28 +08:00
    我和你差不多的习惯

    不过变量名是一个名词 尽量语义化成一个名词就行了 前面的 check 检查的动作是逻辑代码里做的

    检查用户是否关注过公众号 userHasFollowedOfficialAccount = true

    检查用户是否正在关注公众号 userIsFollowingOfficialAccount = true
    zhuzhibin
        7
    zhuzhibin  
    OP
       2021-03-06 13:17:09 +08:00
    @superrichman 有点道理 狗头:)
    zhuzhibin
        8
    zhuzhibin  
    OP
       2021-03-06 13:17:28 +08:00
    @PerFectTime 你是记得住 其他老哥 review 的时候 就被骂了
    AllenHua
        9
    AllenHua  
       2021-03-06 13:17:41 +08:00
    英语的时态和语态 在变量命名中 如果语义化的很好 那么代码可读性就会很强(英语能力稍微过关即可)
    PerFectTime
        10
    PerFectTime  
       2021-03-06 13:20:08 +08:00
    @zhuzhibin #8 小公司没有 review,自己看得懂就好
    zhuzhibin
        11
    zhuzhibin  
    OP
       2021-03-06 13:26:40 +08:00
    @PerFectTime 老哥,随心所欲没有错,因为不一定强制规范,但是你说小公司的没 review,这就是你的不对了(狗头),我也是在小公司,不管是自己写代码或者啥的,我们应该都要有一套规范或者说约定,这样自己以后也方便阅读,也方便别人阅读,跟公司大小无关,跟自己有关,例如你自己一个人写代码你同样可以遵循代码规范、git-commit 规范 https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines
    zhuzhibin
        12
    zhuzhibin  
    OP
       2021-03-06 13:28:23 +08:00
    @AllenHua 我觉得有时候那种没那么语义化的 我有点难定义 有时候赶时间就乱搞 直接直译一下 这里顺便也吐槽一下微信官方的文档 其实那些变量也不怎么滴 狗头:) 懂的都懂
    wolfan
        13
    wolfan  
       2021-03-06 13:33:42 +08:00 via Android
    前缀简写,驼峰全名,词尾加属性。生成、设置类用_分割(不用驼峰)
    wzb0909
        14
    wzb0909  
       2021-03-06 13:44:16 +08:00 via iPhone
    模块化做好一点,小函数里面的变量名字就别纠结了。
    zhuzhibin
        15
    zhuzhibin  
    OP
       2021-03-06 13:49:43 +08:00
    @wzb0909 别抬手就模块化吧,每个人有各自的习惯,不觉得不纠结那就不纠结罢了
    zictos
        16
    zictos  
       2021-03-06 13:54:02 +08:00
    看到一段代码,如果变量名称太长而自己又没耐心去仔细研究的情况下会觉得很吓人,情愿去看变量短的,结构显得更简洁。但有耐心的情况下有时候变量长会好理解一点。
    变量只是一个名称,只要能大致看懂就可以了,不然就成英语了。你说的“用户完成的任务总数量对应的奖品或者其他一些有的没的”,把“奖品”当作重点就行。再说同一个变量还可以反复赋值,函数里面的变量与外面的变量不冲突。
    zhuzhibin
        17
    zhuzhibin  
    OP
       2021-03-06 14:05:59 +08:00
    @zictos 确实有道理 感谢建议~
    NexTooo
        18
    NexTooo  
       2021-03-06 14:07:44 +08:00
    过长的话我会缩减,内部变量靠注释,外部会调用的变量一部分交给类名来解释
    如你这个我可能会改成 checkFollowed 这样,便于阅读,如果还看不懂可以跳转到具体变量声明处看注释
    NexTooo
        19
    NexTooo  
       2021-03-06 14:09:10 +08:00
    个人观点,不是命名对应功能越完善就越好,突出重点就行了
    你这个我要反复看两三次逐词翻译才能确定是啥意思,这种时候交给注释会更好吧,句子读起来比驼峰代码块快多了
    MeatIndustry
        20
    MeatIndustry  
       2021-03-06 15:37:10 +08:00 via iPhone
    建议阅读一下 clean code
    ALVC666
        21
    ALVC666  
       2021-03-06 16:24:08 +08:00
    我也有陷入过这种的情况
    感觉过长的还是缩短然后加注释比较好
    wzb0909
        22
    wzb0909  
       2021-03-06 19:15:59 +08:00 via iPhone
    @zhuzhibin 是的你说的对。

    如果这个变量是用户的属性,公众号只有一个,我想就是 isSubscribed 最好。
    如果是一个方法,并且用户和公众号都是不定的参数,哎,这是一个关系查询,我喜欢把动词放前面,用不同动词区分本地 /远程,立刻 /缓存,突出一个对立的差别。动词的参数变多,后面跟的解释难以避免会复杂。如果公众号确定一个,上面网友说的 checkFollowed 就好(当然我还是认同 subscribe )。
    check_subscribed 和 subscribed 是两个概念,前者生成后者。然后,我感觉前面的网友都,是当作属性名字去讨论的,是方法就更复杂些(动词比名词复杂)。
    我不喜欢长名字,不过长名字有时候也必要。
    aoeui
        23
    aoeui  
       2021-03-06 19:19:24 +08:00 via Android
    yhsfgzgzh 🐶
    123abcdf11345
        24
    123abcdf11345  
       2021-03-06 19:36:16 +08:00
    woshigebianliang = true
    Shook
        25
    Shook  
       2021-03-06 19:50:29 +08:00
    // 用户是否关注过公众号
    const isFollowed = true;
    zhuzhibin
        26
    zhuzhibin  
    OP
       2021-03-06 20:14:44 +08:00
    @MeatIndustry 好的
    @ALVC666 但是也不能太依赖注释咯
    @aoeui 🐶
    @123abcdf11345 666
    RedBeanIce
        27
    RedBeanIce  
       2021-03-06 20:33:23 +08:00
    1,Java 编码的时候,一般建议少写不必要的注释,代码可以描述清楚的问题代码解决
    2,变量长一点没有太大关系,不要过于长,如一,代码越清晰越好
    3,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2697 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:41 · PVG 14:41 · LAX 22:41 · JFK 01:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.