如果你用过条件判断语句,你应该通常会用到
if
或switch
语法。ES6 给我们更强大的能力去写更好的条件判断语句,它更短,更简洁。
这个文章我们会展示 程序员必备 提高条件判断语句可读性的几个方法
如果你用过条件判断语句,你应该通常会用到 if
或 switch
语法。
ES6 给我们更强大的能力去写更好的条件判断语句,它更短,更简洁。
这个文章我们会展示 6 种方法来提高条件判断语句的可读性,可维护性!
这有助于你提高编程水平,并写出优质的代码!程序员必备 提高条件判断语句可读性的几个方法
return
代替 if else
看看下面的代码。嵌套式的 if
判断的代码是很丑陋的,很难控制,很难定位 bug。如果你嵌套得太多层,层次太深,而且如果你的电脑屏幕太小,都很难展示完整的语句。你必须用鼠标滚动屏幕才能显示出来。
const isBabyPet = (pet, age) => { if (pet) { if (isPet(pet)) { console.log(‘It is a pet!’); if (age < 1) { console.log(‘It is a baby pet!’); } } else { throw new Error(‘Not a pet!’); } } else { throw new Error(‘Error!’); } };复制代码
如果解决上面这个问题呢?就是要早早地 return
。如果遇到错误,或者无效的情况,我们早早地 return
或者抛出错误,就会少一些判断,且看下面的代码:
const isBabyPet = (pet, age) => { if (!pet) throw new Error(‘Error!’); if (!isPet(pet)) throw new Error(‘Not a pet!’); console.log(‘It is a pet!’); if (age < 1) { console.log(‘It is a baby pet!’); } };复制代码
假设您需要检查动物是否是宠物,如下所示:
const isPet = animal => { if (animal === ‘cat’ || animal === ‘dog’) { return true; } return false; };复制代码
上面的代码中:动物如果是猫或者狗就是宠物,如果还要加上其他的呢,比如蛇,鸟。这个时候你可能会再加上类似这样的判断 || animal=== 'snake'
。
其实我们可以用 Array.includes 代替它,比如:
const isPet = animal => { const pets = [‘cat’, ‘dog’, ‘snake’, ‘bird’]; return pets.includes(animal); };复制代码
我们在定义一个函数的时候,你通常会确定你的参数是非空的(null
或 undefined
),如果是为空,我们会为它设置一个默认值,我们可能会这样做:
const isBabyPet = (pet, age) => { if (!pet) pet = ‘cat’; if (!age) age = 1; if (age < 1) { // Do something } };复制代码
这样你要在函数体里判断,并设置值,有点多余,我们可以这样简化,使用函数参数默认值。
const isBabyPet = (pet = ‘cat’, age = 1) => { if (age < 1) { console.log(‘baby’); } };复制代码
如果给了您一些宠物,并要求检查所有宠物是否有四只脚怎么办?
比如:
const pets = [ { name: ‘cat’, nLegs: 4 }, { name: ‘snake’, nLegs: 0 }, { name: ‘dog’, nLegs: 4 }, { name: ‘bird’, nLegs: 2 } ];const check = (pets) => { for (let i = 0; i < pets.length; i++) { if (pets[i].nLegs != 4) { return false; } } return true; } check(pets); // false复制代码
我们会用到 for
去循环遍历这个数组,然后再用 if
来判断。
其实一条语句就可以简化:
let areAllFourLegs = pets.every(p => p.nLegs === 4);复制代码
让我们稍微更改一下任务。 现在,我们将检查至少一只宠物是否有四只脚。 这时候我们可以使用 Array.some
let check = pets.some(p => p.nLegs === 4);复制代码
switch…case
下面的 switch
语句将返回给定普通宠物的品种。
const getBreeds = pet => { switch (pet) { case ‘dog’: return [‘Husky’, ‘Poodle’, ‘Shiba’]; case ‘cat’: return [‘Korat’, ‘Donskoy’]; case ‘bird’: return [‘Parakeets’, ‘Canaries’]; default: return []; } };let dogBreeds = getBreeds(‘dog’); //[“Husky”, “Poodle”, “Shiba”]复制代码
这里写了好多 case return
,看到这样的代码,我们就要想,能不能优化它。
看看下面更清洁的方法。
const breeds = { ‘dog’: [‘Husky’, ‘Poodle’, ‘Shiba’], ‘cat’: [‘Korat’, ‘Donskoy’], ‘bird’: [‘Parakeets’, ‘Canaries’] };const getBreeds = pet => { return breeds[pet] || []; };let dogBreeds = getBreeds(‘cat’); //[“Korat”, “Donskoy”]复制代码
我们先分类组合形成一个对象 breeds
,这样对象的索引就是动物的名称,而值就是动物的品种,我们在使用getBreeds
的时候直接传入索引就好,就会返回出它的种类。
程序员必备 提高条件判断语句可读性的几个方法.我们在写代码的时候,通常会写很多重复或复杂的语然,这个时候你就要思考如何去优化它,这样有助于你提高编写代码的能力
全文详见:http://it-club.cn/post/292.html