返回顶部
首页 > 资讯 > 前端开发 > node.js >Google发布的JavaScript代码规范是什么
  • 780
分享到

Google发布的JavaScript代码规范是什么

2024-04-02 19:04:59 780人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关Google发布的javascript代码规范是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Google为了那些还不熟悉代码规范的人发布

这篇文章将为大家详细讲解有关Google发布的javascript代码规范是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Google为了那些还不熟悉代码规范的人发布了一个js代码规范。其中列出了编写简洁易懂的代码所应该做的最佳实践。

代码规范并不是一种编写正确JavaScript代码的规则,而是为了保持源代码编写模式一致的一种选择。对于JavaScript语言尤其如此,因为它灵活并且约束较少,允许开发者使用许多不同的编码样式。

Google和airbnb各自占据着当前最流行的编码规范的半壁江山。如果你会在编写JS代码上投入很长时间的话,我强烈推荐你通读一遍这两家公司的编码规范。

接下来要写的是我个人认为在Google的代码规范中,与日常开发密切相关的十三条规则。

它们处理的问题都非常具有争议性,包括tab与空格、是否强制使用分号等等。还有一些令我感到惊讶的规则,往往最后都改变了我编写JS代码的习惯。

对于每一条规则,我都会先给出规范的摘要,然后引用规范中的详细说明。我还会举一些适当的反例论证遵守这些规则的重要性。

使用空格代替tab

除了每一行的终止符序列,ASCII水平空格符(0x20)是唯一一个可以出现在源文件中任意位置的空格字符。这也意味着,tab字符不应该被使用,以及被用来控制缩进。

规范随后指出应该使用2个,而不是4个空格带实现缩进。

// bad
function foo() {
∙∙∙∙let name;
}
// bad
function bar() {
∙let name;
}
// good
function baz() {
∙∙let name;
}

不能省略分号

每个语句必须以分号结尾。不允许依赖于JS自动添加分号的功能。

尽管我不明白为什么会有人反对这个规则,但目前分号的使用问题显然已经像“空格 vs tab”这个问题一样产生了巨大的争议。而Google对此表示分号是必须的,是不可省略的。

// bad
let luke = {}
let leia = {}
[luke, leia].forEach(jedi => jedi.father = 'vader')
// good
let luke = {};
let leia = {};
[luke, leia].forEach((jedi) => {
 jedi.father = 'vader';
});

暂时不要使用ES6 module

由于es6模块的语义尚不完全确定,所以暂时不要使用,比如export和import关键字。一旦它们的相关规范制定完成,那么请忽略这一条规则。

// 暂时不要编写下面的代码:
//------ lib.js ------
export function square(x) {
  return x * x;
}
export function diag(x, y) {
  return sqrt(square(x) + square(y));
}
//------ main.js ------
import { square, diag } from 'lib';

译者注:感觉遵守这条规范不大现实,毕竟现在已经有babel了。而且使用React时,最佳实践就是使用ES6模块吧。

不推荐代码水平对齐

Google的代码规范允许但不推荐对代码进行水平对齐。即使之前的代码中做了水平对齐的处理,以后也应该避免这种行为。

对代码进行水平对齐会在代码中添加若干多余的空格,这让相邻两行的字符看上去处于一条垂直线上。

// bad
{
 tiny:  42, 
 longer: 435, 
};
// good
{
 tiny: 42, 
 longer: 435,
};

杜绝var

使用const或let来声明所有局部变量。如果变量不需要被重新赋值,默认应该使用const。应该拒绝使用关键字var。

我不知道是因为没有人能说服他们,还是说因为旧习难改。目前我仍能看到许多人在StackOverFlow或其他地方使用var声明变量。

// bad
var example = 42;
// good
const example = 42;

优先使用箭头函数

箭头函数提供了一种简洁的语法,并且避免了一些关于this指向的问题。相比较与function关键字,开发者应该优先使用箭头函数来声明函数,尤其是声明嵌套函数。

坦白说,我曾以为箭头函数的作用只在于简洁美观。但现在我发现原来它们还有更重要的作用。

// bad
[1, 2, 3].map(function (x) {
 const y = x + 1;
 return x * y;
});
// good
[1, 2, 3].map((x) => {
 const y = x + 1;
 return x * y;
});

使用模板字符串取代连接字符串

在处理多行字符串时,模板字符串比复杂的拼接字符串要表现的更出色。

// bad
function sayHi(name) {
 return 'How are you, ' + name + '?';
}
// bad
function sayHi(name) {
 return ['How are you, ', name, '?'].join();
}
// bad
function sayHi(name) {
 return `How are you, ${ name }?`;
}
// good
function sayHi(name) {
 return `How are you, ${name}?`;
}

不要使用续行符分割长字符串

在JS中,\也代表着续行符。Google的代码规范不允许在不管是模板字符串还是普通字符串中使用续行符。尽管ES5中允许这么做,但如果在\后跟着某些结束空白符,这种行为会导致一些错误,而这些错误在审阅代码时很难注意到。

这条规则很有趣,因为Airbnb的规范中有一条与之不相同的规则

Google推荐下面这样的写法,而Airbnb则认为应该顺其自然,不做特殊处理,该多长就多长。

// bad (建议在PC端阅读)
const longString = 'This is a very long string that \
  far exceeds the 80 column limit. It unfortunately \
  contains long stretches of spaces due to how the \
  continued lines are indented.';
// good
const longString = 'This is a very long string that ' + 
  'far exceeds the 80 column limit. It does not contain ' + 
  'long stretches of spaces since the concatenated ' +
  'strings are cleaner.';

优先使用for...of

在ES6中,有3种不同的for循环。尽管每一种有它的应用场景,但Google仍推荐使用for...of。

真有趣,Google居然会特别指定一种for循环。虽然这很奇怪,但不影响我接受这一观点。

以前我认为for...in适合遍历Object,而for...of适合遍历数组。因为我喜欢这种各司其职的使用方式。

尽管Google的规范与这种使用方式相冲突,但Google对for...of的偏爱依然让我觉得十分有趣。

不要使用eval语句

除非是在code loader中,否则不用使用eval或是Function(...string)结构。这个功能具有潜在的危险性,并且在CSP环境中无法起作用。

MDN中有一节专门提到不要使用eval语句。

// bad
let obj = { a: 20, b: 30 };
let propName = getPropName(); // returns "a" or "b"
eval( 'var result = obj.' + propName );
// good
let obj = { a: 20, b: 30 };
let propName = getPropName(); // returns "a" or "b"
let result = obj[ propName ]; // obj[ "a" ] is the same as obj.a

常量的命名规范

常量命名应该使用全大写格式,并用下划线分割

如果你确定一定以及肯定一个变量值以后不会被修改,你可以将它的名称使用全大写模式改写,暗示这是一个常量,请不要修改它的值。

遵守这条规则时需要注意的一点是,如果这个常量是一个函数,那么应该使用驼峰式命名法。

// bad
const number = 5;
// good
const NUMBER = 5;

每次只声明一个变量

每一个变量声明都应该只对应着一个变量。不应该出现像let a = 1,b = 2;这样的语句。

// bad
let a = 1, b = 2, c = 3;
// good
let a = 1;
let b = 2;
let c = 3;

使用单引号

只允许使用单引号包裹普通字符串,禁止使用双引号。如果字符串中包含单引号字符,应该使用模板字符串。

// bad
let directive = "No identification of self or mission."
// bad
let saying = 'Say it ain\u0027t so.';
// good
let directive = 'No identification of self or mission.';
// good
let saying = `Say it ain't so`;

关于“Google发布的JavaScript代码规范是什么”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Google发布的JavaScript代码规范是什么

本文链接: https://lsjlt.com/news/76306.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Google发布的JavaScript代码规范是什么
    这篇文章将为大家详细讲解有关Google发布的JavaScript代码规范是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Google为了那些还不熟悉代码规范的人发布...
    99+
    2024-04-02
  • JavaScript变量名的代码规范是什么
    本文小编为大家详细介绍“JavaScript变量名的代码规范是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript变量名的代码规范是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深...
    99+
    2024-04-02
  • java代码规范的作用是什么
    java代码规范的作用是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。代码规范有什么意义1.一个软件的生命周期中,80%的花费在于维护,代码规范降低了金钱成本和时间成本...
    99+
    2023-06-02
  • Java代码格式规范是什么
    本篇内容介绍了“Java代码格式规范是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!   public&n...
    99+
    2023-06-17
  • java代码规范七大原则是什么
    Java代码规范的七大原则是: SRP(Single Responsibility Principle):单一职责原则,一个类只...
    99+
    2023-10-27
    java
  • web前端开发的规范是什么
    这篇文章主要为大家展示了“web前端开发的规范是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“web前端开发的规范是什么”这篇文章吧。 web前端开发有...
    99+
    2024-04-02
  • JavaScript中的变量命名规范是什么
    这篇文章主要介绍“JavaScript中的变量命名规范是什么”,在日常操作中,相信很多人在JavaScript中的变量命名规范是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript中的变量命...
    99+
    2023-07-04
  • web前端开发规范是什么
    这篇文章主要为大家展示了“web前端开发规范是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“web前端开发规范是什么”这篇文章吧。 一、css书写规范 ...
    99+
    2024-04-02
  • Go语言开发编程规范命令风格代码格式是什么
    本文小编为大家详细介绍“Go语言开发编程规范命令风格代码格式是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Go语言开发编程规范命令风格代码格式是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。命名风格&...
    99+
    2023-07-02
  • go语言的注释编码规范是什么
    注释编码规范:1、所有导出对象都需要注释说明其用途;非导出对象根据情况进行注释。2、如果对象可数且无明确指定数量的情况下,一律使用单数形式和一般进行时描述;否则使用复数形式。3、包、函数、方法和类型的注释说明都是一个完整的句子。4、句子类型...
    99+
    2023-05-14
    Go go语言 Golang 注释
  • java开发文档编写规范是什么
    Java开发文档编写规范是一套规范,用于指导Java开发人员编写清晰、一致和易于理解的文档。以下是一些常见的Java开发文档编写规范...
    99+
    2023-08-28
    java
  • HTML的基础规范是什么
    这篇文章主要介绍“HTML的基础规范是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“HTML的基础规范是什么”文章能帮助大家解决问题。 HTML是一个弱势语...
    99+
    2024-04-02
  • html5是属于什么的规范
    这篇文章主要介绍了html5是属于什么的规范,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。html5属于Web中核心语言HTML的规范;ht...
    99+
    2024-04-02
  • MySQL的语法规范是什么
    MySQL的语法规范如下:1. 关键字不区分大小写:MySQL的关键字不区分大小写,但是为了提高代码可读性,建议使用大写字母表示关键...
    99+
    2023-08-20
    MySQL
  • Google内部的Python代码风格是什么样的
    Google内部的Python代码风格是什么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、背景Python是谷歌主要使用的动态语言,本风格指导列举了使用Python...
    99+
    2023-06-15
  • 前端开发效率提高的代码规范有哪些
    这篇文章主要讲解了“前端开发效率提高的代码规范有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“前端开发效率提高的代码规范有哪些”吧!常见的命名规则1.大...
    99+
    2024-04-02
  • PHP开发的代码书写以及文件命名规范
    这篇文章主要介绍“PHP开发的代码书写以及文件命名规范”,在日常操作中,相信很多人在PHP开发的代码书写以及文件命名规范问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP开发的代码书写以及文件命名规范”的疑...
    99+
    2023-06-17
  • C语言中作用域编码规范是什么
    今天小编给大家分享一下C语言中作用域编码规范是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。规范本身应该是一个规定,但C...
    99+
    2023-06-08
  • 云服务器密码机检测规范是什么
    首先需要在云服务器上安装密码机检测软件,软件会自动扫描云服务器中的密码机,以确保所有的密码都被正确检测到。 当检测到密码机存在异常时,软件会自动记录该异常,并发送异常报告给云服务器管理员。 云服务器管理员需要查看异常报告,以了解密码机的情...
    99+
    2023-10-28
    密码机 服务器
  • PHP开发规范中性能优化的方法是什么
    这篇文章主要介绍“PHP开发规范中性能优化的方法是什么”,在日常操作中,相信很多人在PHP开发规范中性能优化的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP开发规范中性能优化的方法是什么”的疑...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作