scarlex
V2EX  ›  Node.js

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

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

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

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