变量的命名规则有什么比较规范且美观的吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
wszgrcy
V2EX    程序员

变量的命名规则有什么比较规范且美观的吗?

  •  
  •   wszgrcy 2020-12-26 18:00:50 +08:00 5876 次点击
    这是一个创建于 1754 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在纠结这么一个问题,如果一个变量是数组,那么应该命名为 xxxArray,xxxList,xxxs 还是什么其他的,感觉好像从叫法上都说得通,但是不知道有没有什么具体的说道比如某种命名规范?

    还有文件夹命名,那种比较通用的方法,应该起一个什么文件夹名,core,common,util,helper....以及文件夹名应不应该加 s......

    36 条回复    2020-12-28 09:35:52 +08:00
    debuggerx
        1
    debuggerx  
       2020-12-26 19:10:41 +08:00   2
    个人觉得能思考这个问题的就已经是难能可贵的好同志了,统一的规范可能不会有,只要能“讲得通”让大多数人理解就很好了……然后就是开启 IDE 的拼写检查,或者装个拼写检查插件,别写拼错的单词和无意义的变量名,就胜过 90%的同行了
    favourstreet
        2
    favourstreet  
       2020-12-26 19:41:29 +08:00 via Android
    当不确定别人能不能看懂时,把变量名喂给英翻中软件,如果翻出来的中文看起来还可以,变量名就算不错的了
    renmu123
        3
    renmu123  
       2020-12-26 19:45:19 +08:00 via Android
    看你语言习惯,我觉得都 ok,如果命名成 xxxs,还要想是 xxxes,还有不可数,太麻烦了
    eason1874
        4
    eason1874  
       2020-12-26 19:57:26 +08:00
    用 xxxs 多吧,重点在于不用意义不明的缩写,格式统一。

    可以学下匈牙利命名法,直接在开头用小写字母表明类型。比如用 s 表示字符串,用 a 表示数组。
    jerryrib
        5
    jerryrib  
       2020-12-26 20:06:37 +08:00
    zachlhb
        6
    zachlhb  
       2020-12-26 20:11:44 +08:00 via Android
    我觉得命名还是要看语言和框架,尽量使用语言和框架的命名规范比较好,这样看着统一,至于变量命名其实都可以,重点是一个项目中从头到尾最好使用一种命名格式
    PeterChu9527
        7
    PeterChu9527  
       2020-12-26 21:21:18 +08:00
    阿里的《 Java 开发手册》值得参考。
    gwybiaim
        8
    gwybiaim  
       2020-12-26 21:27:13 +08:00
    @favourstreet #2 所以为什么不直接用合适的母语词汇进行命名?
    abersheeran
        9
    abersheeran  
       2020-12-26 21:37:58 +08:00   1
    只要够统一,你可以用拼音、用汉字、用日语、用西班牙语都可以。代码规范的重点不在于单个命名是否信达雅,而在于整个项目的命名是否遵循同一种规则,减少阅读时的心智负担。
    youla
        10
    youla  
       2020-12-26 21:41:49 +08:00
    我因为变量名命名被警告了,老大:你能不能别在变量名上加上自己的名字啊?
    youla
        11
    youla  
       2020-12-26 21:42:14 +08:00
    准确来说还有文件名…
    elintwenty
        12
    elintwenty  
       2020-12-26 21:43:29 +08:00
    简单一点,看《代码整洁之道》,里面有关于命名的章节;
    实际一点,如果是 Java,直接看阿里的手册和常见框架的源码,直接看命名风格就行;
    有效一点,和身边其他人保持一致;
    根本一点,从其他人的角度出发,想一想另一个人能不能看懂你命名的意图就好。
    freebird1994
        13
    freebird1994  
       2020-12-26 21:54:24 +08:00 via Android
    可以看看框架源码。命名风格很值得借鉴
    Rache1
        14
    Rache1  
       2020-12-26 22:05:19 +08:00
    代码里面见到过一种,一个产品 ID 的数组,然后看到了 ProductIds 的命名 ,个人比较能接受 ProductsId 的形式。

    就是 xxxsId 和 xxxIds 的区别。
    raaaaaar
        15
    raaaaaar  
       2020-12-26 23:00:28 +08:00 via Android
    @youla #10 为什么要这么干 ←_←
    forgottencoast
        16
    forgottencoast  
       2020-12-26 23:34:24 +08:00
    .Net 有, 《 NET 设计规范:约定、惯用法与模式(第 2 版)》
    AllenHua
        17
    AllenHua  
       2020-12-27 00:33:32 +08:00 via iPhone
    javaer 推崇 阿 li 规范 可阅读性很高 是 map 变量后加 map (比如 userNameMap ) 是 list 就加 list (比如 resultList ) 但是这种代码的确又臭又长 :狗头)
    iyeatse
        18
    iyeatse  
       2020-12-27 01:34:47 +08:00
    说到可数和不可数,就想到项目代码里遍地的 datas 了。。。简直是跟阀值和请稍后一样令人拳头发硬的存在
    opei3v1867r0zNrq
        19
    opei3v1867r0zNrq  
       2020-12-27 03:30:45 +08:00
    个人感觉还是要考虑一下单复数和不可数名词的。比如楼上说的 data 。还有比如 matrices 这种。还有一个令人“拳头发硬的”是 codes 。
    kaiki
        20
    kaiki  
       2020-12-27 05:31:00 +08:00
    试试用拼音,可以气死看你代码的人
    我反正不敢这么干
    Cbdy
        21
    Cbdy  
       2020-12-27 06:50:17 +08:00 via Android
    参考当前语言的标准库的写法,比如 Java 的 JDK 、C 的 C 标准库
    lishen226
        22
    lishen226  
       2020-12-27 09:57:25 +08:00
    建议不要用 s,太不起眼了,很容易遗漏,母语是英语的不会有这个问题,咱们还是别找麻烦了。
    经过大量实践,xxxList 是没什么问题的。文件夹的命名可以参考 smart-admin 的规范,我感觉很合理。
    https://gitee.com/lab1024/smart-admin/blob/master/%E4%BB%A3%E7%A0%81%E8%A7%84%E8%8C%83/java-standard-guide.md
    skys215
        23
    skys215  
       2020-12-27 10:44:54 +08:00
    我之前还想做起变量名的词典呢
    把用户积分写成 integral 也太离谱了,这可是微积分的积分啊
    AV1
        24
    AV1  
       2020-12-27 12:12:59 +08:00 via Android
    -s 还要考虑不规则变形的情况,所以应该用 list 。
    youla
        25
    youla  
       2020-12-27 14:06:28 +08:00
    @raaaaaar 表示这是我改的!!看我厉害吧……其实就是方便自己查找,因为命名太随意了,经常找不到自己改的东西,所以就自己加名字进去,每次搜自己名字就找到了。一般是方法名和文件名。
    Sapp
        26
    Sapp  
       2020-12-27 15:58:53 +08:00
    起一个让你组员都能跟你一起做到的,如果搞得太严格,很多人根本不这么做,那么结果毫无意义,这个东西没有一定的,主要还是一起合作的人一起确定一个就行。另外很多时候反倒不要死抠规范,比如有很多单词其实你搞个英文的别人也很难看懂,比如我之前做过一个金融的,变量我翻译一遍还是看不懂什么意思,这种冷门的每个人的翻译不一样,结果就差很多,又没有注释,只能靠着猜,那么你用个拼音+注释反倒更可读,重点还是在让人看得懂,如果实在不确定看不看得懂一定加注释,不然自己翻译个乱七八糟,甚至根本不准的英文,又没有注释,这才是最坑的。
    Cr1ck
        27
    Cr1ck  
       2020-12-27 16:25:46 +08:00
    个人风格
    方法形参 f_xxx
    局部变量 tmpXxx
    数组 xxxs
    集合 xxxList
    键值对 xxxDic ( C#)
    可能为空的 tmpOptionalXxxx
    caiji11
        28
    caiji11  
       2020-12-27 17:21:12 +08:00
    @youla 优秀
    wzzzx
        29
    wzzzx  
       2020-12-27 17:29:32 +08:00
    @youla #25 你这个加自己名字是真的牛逼
    wzzzx
        30
    wzzzx  
       2020-12-27 17:30:10 +08:00
    具体也不好说,但是呢,我觉得单复数确实没必要考虑。规则最重要的就是简单
    Takamine
        31
    Takamine  
       2020-12-27 17:36:42 +08:00 via Android
    从《代码整洁之道》里得到的建议就是现在不需要用什么匈牙利命名法,也不用一定强调后面固定加什么后缀。
    关键在于整个风格的统一和易读。即从当时这个变量集合在你的模块内抽象出来所代表的功能是什么来看,给他一个简洁直观的表述。
    ruyu
        32
    ruyu  
       2020-12-27 17:44:47 +08:00
    脸滚键盘即可.
    zeroxia
        33
    zeroxia  
       2020-12-27 22:51:53 +08:00
    没有完美的命名规则。最重要的是一致的命名规则。
    如果自己定不下来,可以参考:
    1 、现有代码库,比如 github 上找几个成熟的代码库。
    2 、大公司的编码规范,Google 、微软等。
    jzmws
        34
    jzmws  
       2020-12-27 23:01:26 +08:00
    代码规范还是要有的, 后期维护才方便
    nano91
        35
    nano91  
       2020-12-28 09:02:27 +08:00
    只要能跑,我就永远用下划线做分割
    no1xsyzy
        36
    no1xsyzy  
       2020-12-28 09:35:52 +08:00
    能看懂就成
    xxx_list lstXxx lxxx xxxl
    只要不影响眼 parse,单加个 l 都成。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5381 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 08:51 PVG 16:51 LAX 01:51 JFK 04:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86