scarlex
V2EX  ›  Node.js

语言规范是驼峰写法, SQL 规范是下划线写法,大家在项目中怎么权衡这两种写法的?

  •  1
     
  •   scarlex · Nov 11, 2016 · 12857 views
    This topic created in 3472 days ago, the information mentioned may be changed or developed.

    作为一个强迫症患者,想两方面都满足...

    我目前找到的这些方法:

    • 用 sequelizejs 这类 ORM ,在 ORM 内部实现驼峰与下划线之间的转换
    • 在语言内部用驼峰写法,然后涉及到下换线的地方都用 data['user_id'] 的形式

    我个人是倾向于第二种方式的,不知道大家会怎么权衡?

    41 replies    2016-11-13 14:25:03 +08:00
    blakejia
        1
    blakejia  
       Nov 11, 2016
    弱弱的问一句。为啥你的主题背景是全黑色的呢
    codeface
        2
    codeface  
       Nov 11, 2016
    @blakejia node.js 下的节点都是这样的
    isCyan
        3
    isCyan  
       Nov 11, 2016
    @blakejia 这是 Node.js 节点的主题吧
    pktangyue
        4
    pktangyue  
       Nov 11, 2016   ❤️ 2
    语言规范是驼峰写法, python 表示不服
    yangff
        5
    yangff  
       Nov 11, 2016
    综合一下,
    Fuck_Variable_1
    scarlex
        6
    scarlex  
    OP
       Nov 11, 2016
    @pktangyue 所以我发到了 Node.js 节点...
    ksco
        7
    ksco  
       Nov 11, 2016
    @scarlex 这表情的背景好违和啊
    scarlex
        8
    scarlex  
    OP
       Nov 11, 2016
    @ksco V2EX plus 提供的表情在 Node.js 节点下都好违和
    Tuisku
        9
    Tuisku  
       Nov 11, 2016
    我感觉 语言规范什么的 都是为了让代码看起来更舒服更顺眼 所以我选择看起来更直观我看着也顺眼的“(大)驼峰式”
    e.g. : UserName

    因为总感觉“小驼峰式”看起来很奇怪 => userName
    tabris17
        10
    tabris17  
       Nov 11, 2016
    我司要求数据库命名用驼峰法,找谁评理去?
    DoraJDJ
        11
    DoraJDJ  
       Nov 11, 2016
    写惯了 Java ,现在变量命名都在用驼峰写法。

    9 楼说的大驼峰式估计是 C# 带出来的吧
    scarlex
        12
    scarlex  
    OP
       Nov 11, 2016
    @Tuisku
    但这种形式的话,在 SQL 里面查询就要带上引号拉, SELECt "UserName" FROM Users;
    这也是我纠结的一部分。
    scarlex
        13
    scarlex  
    OP
       Nov 11, 2016
    @tabris17 用了驼峰基本上都会用上 ORM 吧?
    tabris17
        14
    tabris17  
       Nov 11, 2016
    @scarlex 我们后端是 Python , PEP8 规范,下划线命名好嘛!!!!
    morning
        15
    morning  
       Nov 11, 2016
    推荐一个带转换的 ORM , https://github.com/XadillaX/Toshihiko
    murmur
        16
    murmur  
       Nov 11, 2016
    mybatis 一句配置完美解决
    sampeng
        17
    sampeng  
       Nov 11, 2016
    团队用什么就用什么,没什么好纠结的。
    个人?那还不够你牛逼的。。随便搞。。反正只有自己看
    scarlex
        18
    scarlex  
    OP
       Nov 11, 2016
    @tabris17 咦, python 后端的话数据库用下划线命名很自然啊...还驼峰就搞不懂了
    lonenol
        19
    lonenol  
       Nov 11, 2016
    各种实体类转 SQL 语句,table 转实体类的工具都能自动转换吧
    billlee
        20
    billlee  
       Nov 11, 2016
    因为我喜欢用长名字,所以都用驼峰法,下划线太占地方了
    scnace
        21
    scnace  
       Nov 11, 2016 via Android
    下划线 lint 不会报错?
    scarlex
        22
    scarlex  
    OP
       Nov 11, 2016
    @scnace 可以设置 linter 的规则啊...
    smallpath
        23
    smallpath  
       Nov 11, 2016 via Android
    node 直接搭配 mongodb 和 redis 吧,全驼峰不用管 mysql 下划线了,自动转驼峰其实挺烦人的,比如 vue 的组件名称
    Tuisku
        24
    Tuisku  
       Nov 11, 2016 via Android
    @DoraJDJ 不是 C#带出来的,从入门编程开始我就感觉大驼峰顺眼 😂 所以不管什么语言我一般都这么命名。话说我写.Net 的时候 ReSharper 还一直提示我把大驼峰改成小驼峰,讨人嫌弃哈哈。
    ke1e
        25
    ke1e  
       Nov 11, 2016 via Android
    这就是我不喜欢 django 的原因,作为 Python 框架居然用着驼峰命名法
    dexterzzz
        26
    dexterzzz  
       Nov 11, 2016
    写好的驼峰看起来很舒服
    kechx
        27
    kechx  
       Nov 11, 2016
    如果是数据库字段变量就下划线,其他驼峰。
    onlyice
        28
    onlyice  
       Nov 11, 2016 via Android
    @ke1e Django 哪里用到了驼峰?想不出来
    misaka19000
        29
    misaka19000  
       Nov 11, 2016
    数据库习惯表名小写,字段大写+下划线
    poorcai
        30
    poorcai  
       Nov 12, 2016 via Android
    我感觉驼峰写法好看,个人见解
    Trim21
        31
    Trim21  
       Nov 12, 2016 via Android
    驼峰写起来舒服啊。。。小写字母后面的基本靠自动补全,下划线明明还要打下划线。。。
    forestyuan
        32
    forestyuan  
       Nov 12, 2016
    如果是工作中的代码,肯定要按公司的规定来。如果是个人项目,喜欢怎么写就怎么写,我现在还用老掉牙的匈牙利命名法呢。
    plqws
        33
    plqws  
       Nov 12, 2016
    @Tuisku Resharper 应该是推荐用大驼峰的,估计是你记错了。。
    tabris17
        34
    tabris17  
       Nov 12, 2016 via iPhone
    @scarlex 我们的 dba 牛逼呗,不符合命名规范不让上线哦
    Warder
        35
    Warder  
       Nov 12, 2016
    前端如果对后台返回的数据中变量格式不爽的话,可以用 humps ,。
    > humps - Underscore-to-camelCase converter (and vice versa) for strings and object keys in JavaScript.
    Lpl
        36
    Lpl  
       Nov 12, 2016
    @ksco 因为这个表情不是透明的 233
    breakeryang
        37
    breakeryang  
       Nov 12, 2016
    不清楚是你们用什么样的技术栈, 但是:
    1. sql 一般不区分大小写
    2. 开发语言里不宜嵌入另一种语言, 如字段名不应该在开发语言中出现
    3. 推荐 ORM 自动转换
    Mistwave
        38
    Mistwave  
       Nov 12, 2016 via iPhone
    @Tuisku Haskell 严格区分两种驼峰式😂😂😂
    solee
        39
    solee  
       Nov 13, 2016
    js 写数据传递都是下划线,当然参数命名都是驼峰。规范这个东西只要有个自己遵守的标准就行吧~
    ntdll
        40
    ntdll  
       Nov 13, 2016
    @Tuisku @DoraJDJ 我觉得这个是有原因的, Java 里没有 Property 的概念,属性都是用 Getter/Setter 方法实现的,那么命名的时候都有个动词, getUserName/setUserName ,我觉得这样显然小驼峰比大驼峰好看多了。至于微软系的,完全没有必要弄个 GetUserName 的方法去设置属性,而单独的用 UserName = "xxxx",比小驼峰好看多了。 Java 的方法名和老太太的裹脚布一样,又臭又长,我第一个看 Structs 的类名都蒙了, xxxxAndxxxxx 这个鬼名字都来了,都可以直接当作文档来看。通常 Java 方法名都是以一个动词开头然后接着名词,而 C#一类的几乎就是直接一个名词,或直接一个动词就没了。
    tudou527
        41
    tudou527  
       Nov 13, 2016
    参考 Java 引入 DO 层,这个问题就很好解决了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3080 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 111ms · UTC 08:08 · PVG 16:08 · LAX 01:08 · JFK 04:08
    ♥ Do have faith in what you're doing.