为什么前端命名的时候都爱用下划线或中划线 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
older
V2EX    问与答

为什么前端命名的时候都爱用下划线或中划线

  •  
  •   older 2014-06-06 09:16:39 +08:00 26977 次点击
    这是一个创建于 4151 天前的主,其中的信息可能已经有所发展或是发生改变。
    49 条回复    2017-12-22 10:06:20 +08:00
    wwek
        1
    wwek  
       2014-06-06 09:18:50 +08:00   2
    难道用驼峰?
    older
        2
    older  
    OP
       2014-06-06 09:20:36 +08:00
    @wwek 驼峰不好吗?输入也方便啊
    dallaslu
        3
    dallaslu  
       2014-06-06 09:20:41 +08:00
    也许是从标签不分大小写开始的吧
    Mutoo
        4
    Mutoo  
       2014-06-06 09:22:46 +08:00
    前端经常要跟文件打交道,文件命名用驼峰式很奇怪吧。
    cyyever
        5
    cyyever  
       2014-06-06 09:28:57 +08:00   2
    开源模块(jquery)或者技术书籍的影响,或者Unix文化或者linux文化的影响?驼峰感觉是微软的东西,和linux文化不相容吧。比如我看过的开源代码,基本上都是下划线的。这也正常,因为Unix本来就比微软早。posix定义的system call风格也是下划线的。如果在这种文化薰陶下的人(比如我)下意识会抵制驼峰法。但是Javascript官方函数都是驼峰法的,难道90年代在网景也被微软文化影响了?
    当然上面的话纯属扯淡。。真正的原因是切换大小写太麻烦了。。影响打字速度。。
    hzlzh
        6
    hzlzh  
    PRO
       2014-06-06 09:33:23 +08:00
    BEM 命名法
    lijsh
        7
    lijsh  
       2014-06-06 09:37:34 +08:00
    Javascript里用驼峰的很普遍啊
    ZhaoMiing
        8
    ZhaoMiing  
       2014-06-06 09:37:44 +08:00   3
    js:驼峰
    css:中划线
    文件:下划线
    caoyue
        9
    caoyue  
       2014-06-06 09:40:49 +08:00   1
    用中划线有个好处就是如果是 a-b-c 这样的类型,双击就可以选中 b 而不是全部
    a591826944
        10
    a591826944  
       2014-06-06 09:54:04 +08:00   1
    @caoyue 这种事情有利有弊。。如果我双击就想选中全部呢。。那还麻烦了呢
    jsonline
        11
    jsonline  
       2014-06-06 09:54:27 +08:00 via Android
    不会有结果的
    zhez
        12
    zhez  
       2014-06-06 10:01:09 +08:00   1
    @cyyever 下划线也要按住Shift键,大小写也要按Shift键,所以我认为不存在切换大小写的问题.特别是作为一个对键盘布局熟悉得不能再熟悉的程序员.
    RoshanWu
        13
    RoshanWu  
       2014-06-06 10:03:58 +08:00
    @ZhaoMiing 赞同!
    lyazure
        14
    lyazure  
       2014-06-06 10:15:13 +08:00
    @cyyever jquery是驼峰的, Javascript和Java都是Camel Case的
    微软的C是Pascal Case+Camel Case的,微软出品的最出名的是匈牙利命名法
    Unix和C社区流行的是下划线命名法
    命名这东西有规范按规范,没规范随大流,团队协作的话最好用统一的规范,一些大公司比如google的编程规范里面都会有命名这块的约定
    aisin
        15
    aisin  
       2014-06-06 10:16:38 +08:00 via iPhone
    @a591826944 赞同,想法和你一样
    chairuosen
        16
    chairuosen  
       2014-06-06 10:17:02 +08:00   1
    我习惯这样 js变量用驼峰,css样式用中划线,css锚点用下划线,全局搜一个东西不会混在一起
    cyyever
        17
    cyyever  
       2014-06-06 10:31:05 +08:00
    @lyazure 是驼峰的没错,我记错了
    cyyever
        18
    cyyever  
       2014-06-06 10:32:00 +08:00
    @zhez 我习惯用caps lock切换,所以。。你懂的
    cevincheung
        19
    cevincheung  
       2014-06-06 10:39:05 +08:00
    搞不懂为什么要纠结,萝卜青菜,各有所外,你爱驼峰, 我就爱下划线啊
    cevincheung
        20
    cevincheung  
       2014-06-06 10:39:44 +08:00
    另外一贴。 [为什么前端命名的时候都爱用驼峰而不是下划线和中划线]
    csx163
        21
    csx163  
       2014-06-06 10:43:07 +08:00
    驼峰我不能一眼看出是什么意思,就这样
    learnshare
        23
    learnshare  
       2014-06-06 10:58:32 +08:00
    代码风格的东西,没有什么好讨论的吧
    egen
        24
    egen  
       2014-06-06 11:23:42 +08:00
    有论文研究过,驼峰法相对下划线的命名识别速度要慢
    acthtml
        25
    acthtml  
       2014-06-06 11:28:10 +08:00
    中划线是连字符。
    otakustay
        26
    otakustay  
       2014-06-06 11:32:08 +08:00   1
    中划线有很明显的渐进关系,比如

    user-list
    user-list-item
    user-list-item-name

    很明显他们是从父元素到子元素的关系,而用驼峰就要去一长串里面找大写的字符蛮累的
    nigelvon
        27
    nigelvon  
       2014-06-06 12:51:34 +08:00
    css一般规范都是用中划线,js驼峰和下划线都有。
    sneezry
        28
    sneezry  
       2014-06-06 12:54:53 +08:00
    《可维护的Javascript》一书中明确建议Javascript变量命名采用小写字母开头的驼峰式写法。
    hanf
        29
    hanf  
       2014-06-06 12:56:33 +08:00
    下划线输入更快更容易
    驼峰字符串的辨识性比下划线差
    驼峰看起来太严肃,不够自由玩乐

    这些理由够么。
    zzNucker
        30
    zzNucker  
       2014-06-06 14:13:45 +08:00
    CSS谁用驼峰啊。。。。 蛋疼
    ianva
        31
    ianva  
       2014-06-06 14:26:29 +08:00
    css 中在某些浏览器下用大小写和下划线会有问题,所以最常用的是中划线
    js 驼峰盛行的考虑很可能是基于在早期js压缩还未流行时限制字节的一种方式,不考虑这个的话下划线应该是最好的方式,相比驼峰更清晰易读,如 ruby
    saharabear
        32
    saharabear  
       2014-06-06 14:28:47 +08:00
    js, url参数: 驼峰
    css: 中划线(兼容也最好)
    文件: 下划线
    66beta
        33
    66beta  
       2014-06-06 14:32:41 +08:00
    id用驼峰(为js)
    class用中划线(oocss)
    下划线就不知道是什么来头了
    iscraft
        34
    iscraft  
       2014-06-06 14:34:42 +08:00
    下划线强迫症
    ianva
        35
    ianva  
       2014-06-06 14:35:03 +08:00
    另外也是基于 html,css 中划线在属性的习惯
    比如属性选择器 E[att|="val"]{ sRules } 用来匹配以val开头以中划线为连字符的属性
    [class|="hello"]{ color:#333 }
    可以匹配 <span class="hello-world">hello</span>
    azuginnen
        36
    azuginnen  
       2014-06-06 14:44:07 +08:00
    下划线在vim里面可以自动补全,中划线他会认为是一个单词,不能自动补全。
    kingme
        37
    kingme  
       2014-06-06 14:45:21 +08:00
    基本上只有全局变量会用开头下划线。。。
    ccbikai
        38
    ccbikai  
    PRO
       2014-06-06 16:31:36 +08:00
    JS中小驼峰 CSS用 -
    karvinchen
        39
    karvinchen  
       2014-06-06 18:58:51 +08:00
    css:中划线
    id:下划线
    文件:中划线
    php:驼峰
    anla
        40
    anla  
       2014-06-07 00:58:06 +08:00
    w3C规定,XHTML1.0,严格意义上好像不允许出现大写字母。。。当然,现在xhtml就是个P 了,也没几个人搭理这回事了
    qq286735628
        41
    qq286735628  
       2014-06-07 01:32:50 +08:00
    CSS里面,没法使用像extend之类的主动声明继承的方式

    想想下面的例子
    moduleAa
    moduleAaTitle
    moduleAaMain

    module_aaa
    module_aaa_title
    module_aaa_main

    哪种更容易读,更让人知道代码的层次关系?
    konakona
        42
    konakona  
       2014-06-07 04:20:40 +08:00
    我也我的。
    PHP:打峰(大小英文)
    View:小峰+下
    js:同上
    css:同上
    html:意..
    Gce
        43
    Gce  
       2014-06-07 04:46:26 +08:00 via iPhone
    @a591826944 选择全部ctrl a 呀,你真逗
    refresh
        44
    refresh  
       2014-06-07 07:53:19 +08:00
    有时候会在这几种换,好烦
    数据库一般用下划线,因为某些数据的field被读出来会忽略大小写
    css通常是first-name,大家都这样
    js一般是用firstName,class一般是FirstName,也基本上是约定
    html的话,data-first-name,如果是id一般就是firstName
    文件命名一般用 first-name

    我也经常纠结这个问题,因为不同语言的风格不一样,造成我在同一个项目,甚至同一种语言也会混乱,在js中,我就常常是firstName和first_name混用,文件名经常是firstName和first-name,或者first_name,firstName的方式用得比较少。
    refresh
        45
    refresh  
       2014-06-07 07:54:55 +08:00
    特别是article_id这种问题,articleID其实是个不错的选择,但articleId觉得有点怪,所以我又经常用article_id,这样又导致我在js中使用到了_,但在其它地方我一般又是用firstName这种方式。

    所以,很分裂很混乱很纠结。
    xmbaozi
        46
    xmbaozi  
       2014-06-07 10:16:33 +08:00
    @Gce 看来你不知双击选择是什么东西
    双击是选中一个词,ctrl+a是全部文本。
    yun77op
        47
    yun77op  
       2014-06-07 20:35:39 +08:00
    @hanf 下划线输入容易吗 需要按两个键输入 而驼峰和中划线都只要一个就够了

    sass里变量可以使用中划线了 所以sass里也是用的中划线..
    daodao
        48
    daodao  
       2016-06-17 18:17:39 +08:00
    kgloveyou
        49
    kgloveyou  
       2017-12-22 10:06:20 +08:00
    @caoyue ,我咋觉着这个很不方便呢,比如我想复制该遍历内容,双击只能选中一部分
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5508 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 03:37 PVG 11:37 LAX 20:37 JFK 23:37
    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