当前位置:首页 > 人工智能

如何编写干净的JavaScript代码?

今天来分享几个编写干净的何编JavaScript代码的技巧!

1. 更好的写干命名

在 JavaScript 中,良好命名的代码关键不在于最短的变量名,而在于最具描述性的何编变量名。

如何编写干净的JavaScript代码?

(1)减少幻数

将代码中的写干一些数字定义为一个常量,以使它更有意义,代码也便于后期的何编维护。

如何编写干净的JavaScript代码?

如何编写干净的JavaScript代码?

for (i=0; i < 8765; i++){ }

const HOURS_IN_A_YEAR = 8765

for (i=0; i < HOURS_IN_A_YEAR; i++){ }(2)语义化命名

尽可能语义化变量和函数的写干名称。

onst expired = true;

const e = true;

const hasExpired = true; // 布尔值应该有一个类似于is、代码has或was的何编前缀

const expiredDate = new Date()

let expiredElementsAmount = 0

let allExpiredElemnts = []

2. 保持简洁

(1)避免重复

为了更好地实现简洁的代码,应该遵循DRY(Dont Repeat Yourself)原则。高防服务器写干减少代码的代码重复。

async function notifyUsers(userIds,何编 message) {

userIds.foreach(userId => {

const user = await User.findByPk(userId)

if(user.isSubscribed) {

const Notification = await Notifications.create({

date: new Date(),

user_id: userId,

message,

emailNotify: true });

Notification.save();

} else {

const Notification = await Notifications.create({

date: new Date(),

user_id: userId,

message,

emailNotify: true });

Notification.save();

}

}

}

async function notifyUsers(userIds, message) {

userIds.foreach(userId => {

const user = await User.findByPk(userId)

notifyUsers(userId, message, user.isSubscribed)

}

}

async function createNotification(userId, message, isSubscribed) {

const Notification = await Notifications.create({

date: new Date(),

user_id: userId,

message,

emailNotify: isSubscribed });

Notification.save();

}(2)使用递归

有些情况下,使用递归的写干代码会比迭代更加简洁。

const stepsToHundred = (number) => {

let steps = 0

while(number < 100) {

number *= 2

steps++

}

return steps

}

const stepsToHundred = (number,代码 steps) =>

number < 100 ? stepsToHundred(number * 2, steps + 1) : steps(3)字符串连接

ES6中新增了模板字符串功能使我们可以在拼接字符串时代码更短、更简洁。

const welcomeMessage = "你好" + user1 + ", 我是" + user2;

const welcomeMessage = `你好 ${ user1}, 我是 ${ user2}`

3. 减少多层嵌套

(1)条件语句

不要将 return 语句嵌套到 if-else 中。

const getUSTime = (time) => {

if(time <= 12){

return time + "AM"

} else {

return time + "PM"

}

}

const getUSTime = (time) => {

if(time <= 12) return time + "AM"

return time + "PM"

}

也可以使用三元表达式来写:

const getUSTime = (time) => {

return time + (time <= 12 ? "AM" : "PM")

}(2)async/await

当使用链式的 Promise 时,代码的可读性就会变差。可以使用async/await来优化异步嵌套的代码。

const sharePost = () => {

getPost().then(post => {

sendTweet(post.url, `分享一篇文章: ${ post.title}`)

.then(() => {

console.log("分享成功");

});

});

}

const sharePost = async () => {

const post = await getPost();

await sendTweet(post.url, `分享一篇文章: ${ post.title}`)

console.log("分享成功");

}

4. 干净的函数

(1)处理大量参数的函数

当函数的参数很多时,需要按照顺序传递参数就很麻烦,亿华云可以使用对象包装所有的参数,这样传递参数时就可以乱序传递,避免传参时出错。

function addUser(firstName, lastName, age, city, state, zipCode) {

// ...

}

function addUser({ firstName, lastName, age, city, state, zipCode }) {

// ...

}(2)单一责任原则

使用单一职责原则,可以轻松的命名函数,每个函数只做一件事。可以通过它的名称确切地知道该函数的作用,并且该函数不会是冗长的。

async function signupUser(email) {

const user = await User.create({ email });

await user.save();

const notifcation = await Notification.create({ email });

await notifcation.save();

const date = new Date()

Log.add(date, "已注册", email)

}

const logSignup(email) => Log.add(new Date(), "已注册", email)

async function signupUser(email) {

createUser(email)

notifyUser(email)

logSignup(email)

}

async function createUser(email) {

const user = await User.create({ email });

await user.save();

}

async function notifyUser(email) {

const notifcation = await Notification.create({ email });

await notifcation.save();

}(3)回调中首选箭头函数

在 JavaScript 中,map、filter等方法都需要一个匿名函数作为参数,在这些情况下,使用箭头函数是最方便和优雅的方式

[1, 2, 3].forEach(function (x) {

const y = x ** 2;

return x + y;

});

[1, 2, 3].forEach((x) => {

const y = x ** 2;

return x + y;

});

源码库

分享到:

滇ICP备2023006006号-16