1、注重命名
7 Z( C6 s0 Z0 y8 `- \ 为一个事件命名是很困难的。虽然困难但是非常有必要。- F& i- Z8 K- {$ w
想象以下,将两个数组合并成一个数组,并生成一个唯一值的数组。那么你会怎么命名它呢?我们也许会这样命名?
/ O$ c# d) B) B
- function mergeNumberListIntoUniqueList(listOne, listTwo) {
- return [...new Set([...listOne, ...listTwo])]
- }
上面的命名并不糟糕,但是还不是很友好。你可以将一个功能函数拆分为两个功能函数,这样命名更友好和函数复用性更好。
/ D' P" Q: {# m) m. d* u- function mergeLists(listOne, listTwo) {
- return [...listOne, ...listTwo]
- }
-
- function createUniqueList(list) {
- return [...new Set(list)]
- }
4 z' `2 F' T7 [8 X( E
2、IF语句简化, u) V0 b" u. t+ i" a, O/ H
假设我们有下面的代码:6 d! H( I1 `) h* |) m
- if(value === 'duck' || value === 'dog' || value === 'cat') {
- // ...
- }
我们可以这样解决:
( D9 h) z+ ? W& M+ m; }4 Z- const options = ['duck', 'dog', 'cat'];
- if (options.includes(value)) {
- // ...
- }
将乱七八糟的条件判断放到一个变量中存储,比看臃肿的表达式要好很多。
- c, z [7 T6 }& p/ i+ E1 ^$ f3、及早返回
7 A8 a3 {# B1 a, P r 有下面的代码:
8 W' Q! Q/ I8 Z# p6 p- function handleEvent(event) {
- if (event) {
- const target = event.target;
- if (target) {
- // Your awesome piece of code that uses target
- }
- }
- }
及早返回使得我们的代码更加易读:4 q2 ]- Z/ y6 \
- function handleEvent(event) {
- if (!event || !event.target) {
- return;
- }
- // Your awesome piece of code that uses target
- }
( B) c, x' u9 l1 g8 ^
4、解构赋值2 _1 J l1 d2 H
在javascript中,我们可以对objects和arrays进行解构赋值。例如:1 b. I/ F8 T+ l% r( a, `9 _& m, h
- // object 解构赋值
- const numbers = {one: 1, two: 2};
- const {one, two} = numbers;
- console.log(one); // 1
- console.log(two); // 2
-
- // array 解构赋值
- const numbers = [1, 2, 3, 4, 5];
- const [one, two] = numbers;
- console.log(one); // 1
- console.log(two); // 2
3 V. {" [+ D$ p4 n) d
5、童子军规则
3 t* s: e' D( `7 L 童子军有一条规则:永远保持离开时的露营比你发现它时更整洁。如果你在地面上发现了脏东西,那么无论是否是你留下的,你都要将它清理干净。你要有意地为下一组露营者改善环境。
& W' N2 u% X! c6 G" l+ y+ v 我们编写代码也是这样子,如果你在代码中发现了脏代码,那么你可以尝试去修改它,即使是一个没有被引用到的变量名。& J7 Z8 |) \% {* @! N: X; S. y" n
6、代码风格" l9 e; y' M5 `# j ^; P8 j: A, t
在你的团队中使用一种代码风格,比如限定代码缩进的规范是两空格呢还是四空格;使用单引号呢还是双引号呢;使用同类的一种框架呢,还是流行两种解决方案的框架呢...这样团队中人员接手项目的成本就会降低,开发人员的心里减少排斥感~
! O" I6 G3 N. p: N& R. [+ h# j! j8 y, c! Z$ N% n( I7 J
|