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

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

  •  
  •   older · 2014-06-06 09:16:39 +08:00 · 26327 次点击
    这是一个创建于 3611 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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  
       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
    驼峰我不能一眼看出是什么意思,就这样
    belin520
        22
    belin520  
       2014-06-06 10:53:41 +08:00
    @chairuosen 点赞
    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  
       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   ·   我们的愿景   ·   实用小工具   ·   3343 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 12:02 · PVG 20:02 · LAX 05:02 · JFK 08:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.