您好, 欢迎访问【菲律宾申搏sunbet官网下载】网站
数字快报_知识知道
主页 > 介绍影音 >用空格还是用Tab键?Google推出《JavaScript >

用空格还是用Tab键?Google推出《JavaScript

2020-07-24
浏览次数 921次

用空格还是用Tab键?Google推出《JavaScript

Google 的工程师大大为了帮助刚入手 JavaScript 者写出乾净、易懂的 code,提供了一个独具特色的教学《JavaScript 指南》,而本文作者丹尼尔西蒙斯,一位 web 开发人员/Java 爱好者精心总结了 Google 推出的这份指南中最有趣、最有用的十三条规则。

JS 具有强大的灵活性和包容性,因此,JS 的编写具有不同的风格,因此如何保证你的原始码在编写过程中保持着统一的风格才是编写 JS 的过程中需要注意的。

Google 和 Airbnb 使用着两种最流行的编写规则,它们对细节的把关深深的影响着我,从一个个的标点到页面的布局,扣着一个个的小细节,这也深深的影响了我在写 JS 过程中的一些习惯。以下是我挑选的 Google JS 指南中最有趣、有用的十三条规则。

我将针对每一个规则都会给一个总体的叙述,然后再进行详细的叙述,结合自身的开发经历,给出一些实用的介绍,如果条件允许,还有一些相关的例子给大家分享一下。

用空格还是用 Tab 键?

除了行终止符之外,ASCII 字符是在原始档案中出现的唯一空白字符。这意味着 Tab 键不用于缩排。

因此,你应该使用空格来实现你的设计而不是 Tab 键,而且只要键入两个空格就可以,而不是四个空格。

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

必不可少的分号

每个语句都必须以分号结束。不要为了省事使用自动分号插入。那会给你带来后面很多不必要的麻烦的。

// bad let luke = {} let leia = {} [luke, leia].forEach

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

虽然我无法想像为什幺有人反对这个想法,但在 JS 中使用分号正在成为一种新的「空格与 Tab 键」的争论。Google 是支援使用分号的,至于刚入行的还是建议跟着潮流走。

不要使用 ES6 模板

不要使用 ES6 模块 ,因为它们的语义还没有最终确定。

// Don't do this kind of thing yet:

//------ lib.js ------ export function square { return x * x; } export function diag { return sqrt + square); } //------ main.js ------ import { square, diag } from 'lib';中立态度的水平对齐

在 Google 提供的模板里面,水平对齐并没有提出很高的要求,还是比较随意的。

水平对齐就是在目标模块的周边增加可变量的额外空格,使得目标出现在我们想让他出现的位置上就可以。

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

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

不要使用 var 关键字

除非需要重新分配一个变量,否则将所有本地变量声明为 const 关键字或 let 型。默认情况下使用 const。但是在使用 var 关键字的时候一定要慎重。

其实在平时学习中,我仍然看到人们在 StackOverflow 和其他地方的 code 示例中使用 var 型。我不知道其他人使用 var 是因为什幺,可能这只是一种老习惯垂死挣扎吧。

首选箭头

个人感觉箭头函数已经提供了简洁的语法,并解决了许多困难。所以个人更喜欢箭头函数而不是函数关键字,特别是巢状函数。

说实话,我认为箭头不仅功能很好,而且它们更简洁,更美观。而且,事实证明,它们也有很重要的作用。、

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

使用模板字串而不是连接

在复杂的字符串连接上使用模板字串,特别是在涉及多个字串时。因为模板字串可以跨越多个行。

// bad function sayHi { return 'How are you, ' + name + '?'; }// bad function sayHi { return ['How are you, ', name, '?'].join; }// bad function sayHi { return `How are you, ${ name }?`; }// good function sayHi { return `How are you, ${name}?`; }不要对长字符串使用断行

在普通或模板字符串中不要使用行延续 。儘管 ES5 允许这样做,但如果在斜杠之后出现任何尾随空格,那幺它就会导致棘手的错误,而且对新手来说不太明显。

// badconst 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.';

有趣的是,这是 Google 和 Airbnb 意见不同的规则 。虽然 Google 推荐连接更长的字符串 ,但 Airbnb 的风格指南建议基本上什幺都不做,并且允许长字符串在需要的时候继续使用。

// badconst 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”是“for 循环”的首选类型

在 ES6 中,语言现在有三种不同的 for 循环。工程师是可以使用所有的循环,但在可能的情况下应该首选 for-of 循环。

我个人感觉 for 更适合于对象,而 for of 更适合于数组。只是适合不同的风格。虽然 Google 的规範并不一定与这个想法相矛盾,但是,可以看出 Google 对于这个迴圈还是情有独锺的。

不要使用 eval

不要使用 eval 或函数构造函数 。这些特性可能是危险的,在 CSP 环境中根本不起作用。

eval 的 MDN 页面甚至有一个部分叫做「不要使用 eval!」的提示。

// bad let obj = { a: 20, b: 30 }; let propName = getPropName;  // returns "a" or "b" eval;

// 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

常数应该以全部大写命名,并且以底线分隔。

常数名称使用类似于 CONSTANT_CASE 的表示方法: 所有大写字母,用底线隔开。

如果可以绝对确定变量不改变,就可以使用常数来定义,这样也可以表示某个变量在整个过程中不会发生改变。

这个规则的一个特例就是,如果这个变量是函数特有的话,最好是申名在函数的空间里面。

每个变量独立对待

这没有什幺好介绍的,直接上 code:

// bad const number = 5;

// good const NUMBER = 5;

特别注意使用单引号,而不是双引号

普通的字符串是用单引号来分隔的,而不是双引号 。

提示: 如果字符串包含单引号字符,请考虑使用模板字符串,以避免误导。

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

// good let a = 1; let b = 2; let c = 3;最后的总结

正如我一开始所说的,这些不是唯一的标準。Google 只是众多科技巨头中的一个,而这些只是众多工程师总结出来的经验而已。

看看 Google 这样的公司提出的风格建议还是比较有意义的,它僱佣了很多聪明的人,他们花了大量时间研究如何编写优秀的代码。

如果你想遵循「Google 相容的开源码」的指导方针,你可以遵循这些规则——但是,你要是有自己的喜好,那很棒,你可以自由地放飞自我。

我个人认为,在很多情况下,Airbnb 的规範比 Google 更有吸引力。不过无论对这些特定的规则採取何种立场,我们在编写任何类型的代码时,唯一的要求就是要保持风格上的一致性。