0. 前言

在编程和数据库设计中,命名规范往往决定了项目的可读性与可维护性。常见的命名连接符主要有两种:短横线(-下划线(_

1. 短横线(-)的特点

优点

  • 可读性强:在自然语言中,单词分隔通常使用空格或短横线,因此 my-name 看起来更像英语书写,直观且清晰。

  • 常见于 URL:在 Web 开发中,短横线是推荐的 URL 命名方式,例如:

    https://example.com/user-profile
    https://blog.site.com/data-analytics
    

    对于 SEO(搜索引擎优化)也更友好,因为搜索引擎会把 - 识别为空格,而 _ 会被识别为单词的一部分,此处可参考:URL Best Practice: Hyphens, Underscores, or No Separators?

缺点

  • 多数编程语言不支持:在几乎所有主流语言(JavaScript、Python、Java、C++、Go 等)中,变量名、函数名不能包含 -,因为它会被解析为减号运算符。

    let user-name = "Alice"; // 语法错误
    
  • 限制场景:因此,- 更适合用于文件名、URL、配置文件(如 YAML/JSON 的键名),而不是代码内部变量。

2. 下划线(_)的特点

优点

  • 语言支持广泛:几乎所有编程语言都允许 _ 出现在标识符中,适合作为单词分隔符。

    user_name = "Alice"
    def get_user_info(): ...
    
  • 数据库兼容性好:在 MySQL、PostgreSQL、Oracle 等数据库中,表名、字段名普遍使用下划线连接单词,如:

    CREATE TABLE user_profile (
      user_id INT PRIMARY KEY,
      user_name VARCHAR(50)
    );
    
  • 约定俗成:许多语言的社区规范默认推荐下划线。例如:

    • Python:PEP8 推荐函数、变量使用 snake_case

    • 数据库:常见约定是 snake_case,尤其在大规模项目中。

缺点

  • 可读性稍逊:相比短横线,连续下划线在某些情况下不够直观,特别是字段名很长时:

    customer_transaction_detail_record
    

3. 实际使用场景对比

场景

推荐连接符

理由

编程语言变量

_

语言支持,社区规范广泛

数据库表/字段

_

SQL 兼容性最好,常见约定

文件名

-

可读性高,跨平台友好

URL 路径

-

SEO 优化,更自然语言化

配置文件键名

-_

YAML/JSON 均可

4. 最佳实践建议

  1. 代码中:优先使用下划线(snake_case),保证跨语言兼容性和团队协作一致性。

    def get_user_info():
        return user_profile
    
  2. 数据库中:统一使用下划线,避免大小写不一致的问题(部分数据库对大小写敏感)。

    SELECT user_id, user_name FROM user_profile;
    
  3. URL 与文件命名中:优先使用短横线(-),既利于 SEO,又符合自然语言阅读习惯。

    /user-profile
    /data-analytics-report
    
  4. 团队约定优先:无论选择 - 还是 _,关键是保持全局一致,避免混用。

5. 总结

  • -(短横线):适合 URL、文件名,强调可读性和 SEO。

  • _(下划线):适合 变量、数据库字段,强调语言支持和兼容性。

一句话总结就是:
代码里用 _,URL/文件里用 -

6. 附文