欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

代碼規(guī)范需要防微杜漸code?review6個小錯誤糾正

 更新時間:2022年06月14日 10:12:16   作者:Sunshine_Lin  
這篇文章主要為大家介紹了代碼規(guī)范需要防微杜漸code?review中的6個小錯誤糾正,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

code review

所謂code review,意思很明確,就是代碼回顧,這個環(huán)節(jié)能幫你發(fā)現(xiàn)一些你代碼中的不好的習(xí)慣,或者一些錯誤的行為。這個工作一般是團隊的老大來做的,但是

我們的團隊人均大佬

所以我們都是一起code review的,人多力量大,參加的人越多,越能讓你發(fā)現(xiàn)自己的錯誤,從而能及時改正,收益頗豐!??!

注:下方代碼都是虛構(gòu),主要為了講解代碼錯誤習(xí)慣,請勿較勁~

分析一下我的錯誤代碼行為

1、寫沒必要的函數(shù)

場景:我需要給某個html根標(biāo)簽設(shè)置一個屬性,而這個行為是需要在項目初始化的時候去做的,我當(dāng)時的做法是:

// utils
export const setXXXyyy = () => {
  const tag = document.tag;
  const xxx = tag.getAttribute('xxx');
  if (xxx || xxx === null) {
    tag.setAttribute('xxx', 'yyy');
  }
};
// app.tsx
import { setXXXyyy } from 'utils'
// 初始化時
setXXXyyy()

缺陷:可能我有考慮到以后會在此函數(shù)里去做更多事,但是現(xiàn)階段這么寫確實有點多余

改正:直接在模板html里把此屬性加到標(biāo)簽上即可

// public/index.html
<tag xxx="yyy"></tag>

2、Promise傳遞不明值

場景:我需要請求一個接口,請求返回一組數(shù)據(jù),我需要把這組數(shù)據(jù)中的某個參數(shù)通過Promise帶出去

// 請求方法
const request = () => {
  return new Promise(async (resolve) => {
    const res = await axios(...)
    resolve(res)
  })
}
// 使用
const res = await request()
console.log(res.data.answer)

缺陷:直接把res傳遞出去了,如果沒有ts的限制,那么下一個使用request的開發(fā)人員根本不知道這個res里有什么,也自然就不知道有answer這個目標(biāo)數(shù)據(jù)了

改正:直接把目標(biāo)數(shù)據(jù)answer傳遞出去

const request = () => {
  return new Promise(async (resolve) => {
    const res = await axios(...)
    // 改正
    resolve(res.data.answer)
  })
}
const answer = await request()
console.log(answer)

3、使用沒必要try catch

場景:試異步操作1,如果失敗的話試異步操作2,如果失敗進行操作3

action1().catch(() => {
  try {
    await action2()
  }  catch(e) {
    throw e
  }
}).catch(() => {
  action3()
})

錯誤:沒必要使用try catch,await失敗之后,會自動返回一個失敗的Promise,通過鏈?zhǔn)秸{(diào)用,會執(zhí)行下一個catch

改正:去除try catch

action1().catch(() => {
  await action2()
}).catch(() => {
  action3()
})

4、Promise.all并發(fā)限制

場景:我需要用Promise.all去進行并行執(zhí)行一些異步操作,這個操作是在服務(wù)端的。。

// promises可能會有幾十個,幾百個,上千個
await Promise.all(promises)

缺陷:眾所周知,服務(wù)端有時候是很脆弱的,可能你幾十個并發(fā)就會把服務(wù)端給折騰的不要不要的了,所以控制并發(fā)是很重要的

改正:既然承受不住,那就控制并發(fā)唄,網(wǎng)上很多控制并發(fā)的方案。這里我就不說哪個方案比較好了。。自己實現(xiàn)也行,用庫也行,看你們團隊需要哪個吧。。

// 控制并發(fā)
await promiseAllLimit(promises)

5、Nodejs中使用過多sync函數(shù)

場景:在后端那邊進行文件操作,由于比較喜歡用同步方法,所以用了

const readData = fs.readFileSync(filepath);
fs.writeFileSync(targetPath, readData);
const workbook = xlsx.readFile(targetPath);
fs.unlinkSync(targetPath);

缺陷:Nodejs引以為傲的就是他的大部分方法都支持異步,所以它才能在高并發(fā)的場景中那么牛,所以盡量少用它的同步方法,性能會好一些

改正:使用它對應(yīng)的異步方法吧,,不過要嵌套了。。很煩啊

6、判空要放前面

場景:有兩個參數(shù),我要對他們進行一系列判斷:

  • 1、判斷數(shù)據(jù)表里有沒有這兩個參數(shù)
  • 2、判斷這兩個參數(shù)是否重疊
  • 3、判斷這兩個參數(shù)是否為空
if (usename) {
  ...
}
if (password) {
  ...
}
if (!username || !password) {
  ...
}

缺陷:這個順序是不對的,如果兩個參數(shù)為空,則沒必要進行另外兩步

改正:改變順序:

  • 1、這兩個參數(shù)是否為空
  • 2、判斷數(shù)據(jù)表里有沒有這兩個參數(shù)
  • 3、判斷這兩個參數(shù)是否重疊
if (!username || !password) {
  ...
}
if (usename) {
  ...
}
if (password) {
  ...
}

以上就是代碼規(guī)范需要防微杜漸code review6個小錯誤糾正的詳細(xì)內(nèi)容,更多關(guān)于代碼規(guī)范code review錯誤糾正的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論