theme: channing-cyan
写代码最应该关注什么
写代码应该有一些原则,需要考虑代码的风格和效率,如果团队一起写的话还要考虑约定,最后要考虑我们的使用场景和应该如何设计。
风格
在团队中,可能每个人的风格都不一样,有的人喜欢结尾用分号,有的人不用分号,还有缩进问题,有人喜欢用空格,有人喜欢用tab,tab缩进也有设置的4个字符有2个字符的。
其实风格没有什么优劣之分,但是在团队中应该注重风格的统一,我们可以使用ESLint来统一进行分风格的约束。
效率
我们在写代码的时候有时候是可读性和效率二者不可兼得,这就需要根据我们的业务场景来进行判断。这个也没什么优劣之分,只不过是取舍问题了。
left-pad事件
当年在GitHub上有很火的事件,left-pad开发者收回了它的开源代码,当时这个npm包很多大型项目都在用,我们来说说这个事情的槽点。 这个left-pad只有十一行代码
代码语言:javascript复制module.exports = leftpad;
function leftpad (str, len, ch) {
str = String(str);
var i = -1;
if (!ch && ch !== 0) ch = ' ';
len = len - str.length;
while ( i < len) {
str = ch str;
}
return str;
}
1.npm模块粒度
我们看到上面的模块,就十一行代码,但是非常多的人在用它,放到今天其实我们是很难理解为什么这么多人在用。因为当年的打包工具不是很灵活,比如在模块里面引入了几个api,我们只想用这几个api,当时这个是不可以的,只能全部打包。
2.代码风格
这个代码的风格其实可读性很好,on的算法效率也挺好的,我们也可以有改进的空间,可以是代码更简介,效率更高效。
3.代码质量/效率
代码语言:javascript复制// leftpad优化
function leftpad(str,len,ch = ' '){
str = " " str;
const padlen = len - str.length;
if(padlen <= 0){
return str;
}else{
return (" " ch).repeat(padlen) str;
}
}
console.log(leftpad(1,8));
MDN里面也有一个示例 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat
最后我们还可以使用这个方法来进行优化。
代码语言:javascript复制 var rpt = " ";
do {
rpt = srt;
str = str;
count &= count -1;
} while(count);
一般我们用这个不会太经常使用,没必要做过度优化。最后还是返回最上面所说的,我们一定要根据场景设定好我们的代码。