V2EX 首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Node.js
Express
PPA for Ubuntu
ppa:chris-lea/node.js
V2EX  ›  Node.js

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

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

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

    我目前找到的这些方法:

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

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

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

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

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