V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
scarlex
V2EX  ›  Node.js

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

  •  1
     
  •   scarlex · 2016-11-11 17:15:43 +08:00 · 11906 次点击
    这是一个创建于 2932 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    我目前找到的这些方法:

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

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

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

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

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