ES6中const对象键的命名约定

mra*_*lau 23 javascript naming-conventions ecmascript-6

es6中const对象中的键名是否有推荐的命名约定?我无法找到一个资源,说明它们应该是大写还是小写.

const COLOR_CODES = {
  BLUE: 1,
  RED: 1
};
Run Code Online (Sandbox Code Playgroud)

VS

const COLOR_CODES = {
  blue: 1,
  red: 1
};
Run Code Online (Sandbox Code Playgroud)

这篇MDN文章的例子显示了两种风格,所以两者都可以接受.

San*_*ues 19

注意:请注意,已接受的响应包含指向过时的Google风格指南的链接

这很好(字符串文字或整数文字):

const PI = 3.14;
const ADDRESS = '10.0.0.1';
Run Code Online (Sandbox Code Playgroud)

但...

const myObject = { key: 'value' };
const userSuppliedNumber = getInputNumber()
Run Code Online (Sandbox Code Playgroud)

谷歌JavaScript风格指南说:

使用const或let声明所有局部变量.除非需要重新分配变量,否则默认使用const.不得使用var关键字.

每个常量都是@const静态属性或模块本地const声明,但并非所有@const静态属性和模块本地consts都是常量.在选择常量情况之前,请考虑该字段是否真的像一个深不可变的常量.例如,如果该实例的任何可观察状态可以改变,那么它几乎肯定不是常量.仅仅打算永远不会改变对象通常是不够的.

JavasSript.info说:

...以资本命名的常量仅用作"硬编码"值的别名.

  • 公认的答案是“大多数其他编程语言都大写”,确实如此。但像 Java 和 C# 这样的语言只支持字符串、数字和布尔值的 const,而不像 Javascript 那样支持任何对象。所以我认为更新后的 Google 风格指南考虑到了这一事实,并且仅在 const 的使用方式与其他语言中相同时建议使用大写,而不是在 Javascript 中使用更不寻常的方式 (3认同)

小智 15

根据谷歌的说法,它将全部上限.从经验来看,大多数其他编程语言都有大写,所以我建议使用它.

使用NAMES_LIKE_THIS恒定值.

使用@const,以指示一个常数(非重写)指针(变量或属性).

Google javascript指南 https://google.github.io/styleguide/javascriptguide.xml


Dan*_*son 5

谷歌曾推荐过以下内容:

const COLOR_CODES = {
  BLUE: 1,
  RED: 1
};
Run Code Online (Sandbox Code Playgroud)

请参阅:https://google.github.io/styleguide/javascriptguide.xml#Constants

  • 使用NAMES_LIKE_THIS恒定.
  • 使用@const,以指示一个常数(非重写)指针(变量或属性).
  • 切勿使用const关键字,因为Internet Explorer不支持该关键字.

但是,更新的样式指南有不同的建议.


Dan*_*ski 5

命名约定无处不在,我个人还没有决定我的喜好,但是为了增加讨论,这就是《Airbnb JavaScript样式指南》所说的内容(请参阅最后的示例):

// bad
const PRIVATE_VARIABLE = 'should not be unnecessarily uppercased within a file';

// bad
export const THING_TO_BE_CHANGED = 'should obviously not be uppercased';

// bad
export let REASSIGNABLE_VARIABLE = 'do not use let with uppercase variables';

// ---

// allowed but does not supply semantic value
export const apiKey = 'SOMEKEY';

// better in most cases
export const API_KEY = 'SOMEKEY';

// ---

// bad - unnecessarily uppercases key while adding no semantic value
export const MAPPING = {
  KEY: 'value'
};

// good
export const MAPPING = {
  key: 'value'
};
Run Code Online (Sandbox Code Playgroud)