const shapeType = type || "circle";
// ...
}
好代码:
function createShape(type = "circle") {
// ...
}
一个函数做一件事 。避免在单个函数中执行多个操作,多种逻辑坏代码:
function notifyUsers(users) {
users.forEach(user => {
const userRecord = database.lookup(user);
if (userRecord.isVerified()) {
notify(user);
}
});
}
文章插图
好代码:
function notifyVerifiedUsers(users) {
users.filter(isUserVerified).forEach(notify);
}
function isUserVerified(user) {
const userRecord = database.lookup(user);
return userRecord.isVerified();
}
文章插图
使用Object.assign配置默认对象坏代码:
const shapeConfig = {
type: "cube",
width: 200,
height: null
};
function createShape(config) {
config.type = config.type || "cube";
config.width = config.width || 250;
config.height = config.width || 250;
}
createShape(shapeConfig);
好代码:
const shapeConfig = {
type: "cube",
width: 200
};
function createShape(config) {
config = Object.assign(
{
type: "cube",
width: 250,
height: 250
},
config
);
...
}
createShape(shapeConfig);
文章插图
不要使用标志作为参数 。坏代码:
function createFile(name, isPublic) {
if (isPublic) {
fs.create(`./public/${name}`);
} else {
fs.create(name);
}
}
好代码:
function createFile(name) {
fs.create(name);
}
function createPublicFile(name) {
createFile(`./public/${name}`);
}
不要让全局变量/函数污染
如果需要扩展现有对象,请使用ES类和继承,不要在对象原型链上创建函数 。
坏代码:
Array.prototype.myFunc = function myFunc() {
// 代码逻辑
};
好代码:
class SuperArray extends Array {
myFunc() {
//代码逻辑
}
}
条件不要用否定句坏代码:
function isUserNotBlocked(user) {
//代码逻辑
}
if (!isUserNotBlocked(user)) {
//代码逻辑
}
好代码:
function isUserBlocked(user) {
//代码逻辑
}
if (isUserBlocked(user)) {
//代码逻辑
}
使用布尔变量直接判断,而不是条件语句坏代码:
if (isValid === true) {
//代码逻辑
}
if (isValid === false) {
//代码逻辑
}
好代码:
if (isValid) {
//代码逻辑
}
if (!isValid) {
//代码逻辑
}
避免使用条件,用多态和继承 。坏代码:
class Car {
// ...
getMaximumSpeed() {
switch (this.type) {
case "Ford":
return this.someFactor() + this.anotherFactor();
case "Benz":
return this.someFactor();
case "BYD":
return this.someFactor() - this.anotherFactor();
}
}
}
好代码:
class Car {
// ...
}
class Ford extends Car {
// ...
getMaximumSpeed() {
return this.someFactor() + this.anotherFactor();
}
}
class Benz extends Car {
// ...
getMaximumSpeed() {
return this.someFactor();
}
}
class BYD extends Car {
// ...
getMaximumSpeed() {
return this.someFactor() - this.anotherFactor();
}
}
文章插图
ES类类是JavaScript中的新的语法糖 。除了语法不同外,其他都和prototype一样工作 。使用ES类可以让你的代码更加简洁清晰 。
坏代码:
文章插图
好代码:
文章插图
使用方法链接许多库如jQuery和Lodash都使用该模式 。因此,该方法可以让的代码简洁 。在主类中,只需在每个函数的末尾返回"this",就可以将更多的类方法链接到该方法 。
坏代码:
文章插图
好代码:
推荐阅读
- 推荐常用的5款代码比较工具「值得收藏」
- 揭秘JavaScript中谜一样的this
- 淘宝店快递助手在哪里 拼多多快递助手店铺代码在哪里
- Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置
- 附代码 什么是Python的迭代器和生成器?
- Python 还能实现哪些 AI 游戏?附上代码一起来一把
- JavaScript?可视化:js引擎
- 10个 JavaScript 开发技巧,前端新手非常有必要掌握
- JeecmsX1.3 发布,低代码自定义生成表格,可视化拖拽式创建
- 一分钟教你看懂蓝屏代码,轻松解决电脑蓝屏问题