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

CodeReview常見的幾個問題梳理解決示例

 更新時間:2022年12月01日 09:11:18   作者:前端那些年  
這篇文章主要為大家介紹了CodeReview常見的幾個問題梳理解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

寫在前面

文章的主要作用是幫助自己進行思考和總結,比如我們可能都遭遇過功能上線后出現了一些不可預知的bug,我們對這些bug進行處理,完善之后,項目負責人可能會叫上這個功能的主要幾個開發(fā)人員做一次復盤會議,大家一起討論出現問題的原因,然后定制對應的方案,防止類似的情況再次出現。

寫文章的道理其實跟開復盤會議一樣,通過思考和總結,我們可以將自己改變的更好。學習可以改變自己,而我們也正是為了改變而學習,寫文章也是一種學習的方式。

當然,由于文筆及文采的限制,寫的內容可能無法滿足所有人的需求,但是,這些內容中,只要能夠講清楚一件事,講清楚哪怕只有一個知識點,這件事或者這個知識點哪怕只有一個人認同,那么,寫這些東西就是有意義的。

Review的功能模塊

這次CodeReview涉及的功能是數據的推理訓練模塊,具體的需求是開發(fā)人員在錄入數據時,有兩種格式:yaml和json,有些人對yaml的數據格式不太清楚,所以需要有一個地方能夠支持yaml語法的配置,同時支持yaml和json之前的互相轉化,即:輸入yaml后,突然發(fā)現其實需要的是json,那么可以直接轉成json格式傳給后端,反之亦然。

yaml和json之前相互轉化的功能,npm上有相應的包,有興趣的可以了解一下,這里就不再敘述了。

Reviewd的問題(收獲)

  • 真需求 VS 偽需求

直屬領導上來就提了一個致命的問題:這個功能是誰在用?真的有必要做這個功能嗎?

作為開發(fā)人員,假如我們不熟悉yaml的語法格式,我們可以快速的去學習一下,那么就沒有必要去浪費人力和時間去開發(fā)這個功能,把時間用來開發(fā)更重要的功能豈不是更好?

當然,這里也不是說這個功能不好,這里反映出的問題是:在開發(fā)一個功能前,我們到底有沒有理解相應的需求?這個需求是個真需求,還是一個一個偽需求?。

這個問題在開發(fā)前是要確認清楚的。

  • 數據格式

當某個功能后期可能會進行擴展時,比如一個用于枚舉的列表,后端返回的數據通常是一個數組。

對于這種可擴展的數據格式,我們需要而且必須和后端進行對齊,而且前端必須做相應的判空處理,永遠不要相信后端返回的數據都是靠的。

比如下面兩種格式,后端有可能會告訴你,它們都表示空數組。

var a = []
var b = [{name:''}]

后端有可能告訴你,啊,我這個b只會有一條數據,當name是空字符串的時候就表示這b沒數據。

但是,a和b從根本上就代表了兩種不同的含義。

所以,有歧義的數據格式一定要跟后端對齊,同時前端一定要做相應的防御性措施,該判空的判空。

  • 還是需要注意ts的類型定義

函數必須要有自己的返回值類型,函數參數也必須有相應的參數類型。凡是ts無法進行推斷的地方,ts默認會推斷為any類型,那么我們使用ts進行開發(fā)的意義又在哪里呢?

  • 異步函數的定義

通常在請求接口的時候我們會使用函數的異步標識async來定義異步函數。但是有時候可能寫習慣了,在不需要做異步處理的地方也定義了異步函數,比如:

const print = async () => {
    console.log('print')
}

這時候就可能會出現意想不到的問題。

  • 該有注釋的地方一定要有注釋

定義的變量有歧義的,有一定的業(yè)務含義的地方,注釋一定要清楚明了,比如:

if(dataDetail.target === 'pc'){
    // do something
}

pc如果有非常具體的業(yè)務含義,那么它表示的是personal computer 還是process center,或者是其他含義呢?

如果對有具體業(yè)務含義的變量定義的過于簡單,且還有沒相應的注釋,那么不經意之間我們就給自己和其他同事挖了一個坑。

  • 運算符的使用

在用三元運算進行判斷時,我們通常這樣寫:

let hasGold = detail.target ===''?false:true

這個判斷我們可以用!!運算符進行優(yōu)化:

let hasGold = !!detail.target

當然,還有很多其他的運算符,比如?.、??。雙問號是null判斷運算符,作用和||雙豎線是一樣的。

const headerText = response.settings.headerText || 'Hello, world!';
const headerText = response.settings.headerText ?? 'Hello, world!';

左側為null 或者undefined時,右側就會生效。

  • 代碼外部注意try/catch的處理,防止有其他的異常情況

我們通常在寫代碼的時候,尤其是寫頁面交互相關的事件時,一般不怎么考慮使用try-catch做處理。

但是,頁面上觸發(fā)事件,用戶手動觸發(fā)的交互,我們有必要做一些防御性的措施,加入try-catch的處理,防止意想不到的問題出現。

try-catch的使用,個人理解的主要時用來防止一些外部的錯誤,比如:

try {
  console.log(a)
} catch (error) {
  console.error(error);
  // VM654:4 ReferenceError: a is not defined
  //  at <anonymous>:2:15
}

有時候我們在定義變量或者函數的時候,可能會出現一些意想不到的問題,try-catch會提前將這些問題拋出來,避免產生更復雜的問題。

外部問題,可以理解為try{}花括號之外的問題。

最后

雖然這次CodeReview涉及的功能非常簡單,其中暴露出來的問題依然值得我們去仔細思考一下。

盡管我們從事開發(fā)工作已經很有經驗了,依然有很多地方值得去思考、去提升。

以上就是CodeReview常見的幾個問題梳理解決示例的詳細內容,更多關于CodeReview 問題梳理的資料請關注腳本之家其它相關文章!

相關文章

  • 如何用JS WebSocket實現簡單聊天

    如何用JS WebSocket實現簡單聊天

    這篇文章主要介紹了如何用JS WebSocket實現簡單聊天,對websocket感興趣的同學,可以參考下
    2021-05-05
  • js案例之鼠標跟隨jquery版(實例講解)

    js案例之鼠標跟隨jquery版(實例講解)

    下面小編就為大家?guī)硪黄猨s案例之鼠標跟隨jquery版(實例講解)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 函數四種調用模式以及其中的this指向

    函數四種調用模式以及其中的this指向

    本文主要介紹了函數四種調用模式以及其中的this指向的相關知識,具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • 一個層慢慢增高展開,有種向下滑動的效果

    一個層慢慢增高展開,有種向下滑動的效果

    一個層慢慢增高展開,有種向下滑動的效果...
    2006-11-11
  • D3.js中data(), enter() 和 exit()的問題詳解

    D3.js中data(), enter() 和 exit()的問題詳解

    相信大多數人對D3.js并不陌生。這是一個由紐約時報可視化編輯 Mike Bostock與他斯坦福的教授和同學合作開發(fā)的數據文件處理的JavaScript Library,全稱叫做Data-Driven Documents,在d3.js中data(), enter() 和 exit()比較常見,下面給大家就這方面的知識給大家詳解
    2015-08-08
  • javascript結合CSS實現蘋果開關按鈕特效

    javascript結合CSS實現蘋果開關按鈕特效

    這篇文章主要介紹了javascript結合CSS實現蘋果開關按鈕特效的方法以及全部代碼,效果非常不錯,兼容性也很好,有需要的小伙伴自己參考下
    2015-04-04
  • JS正則替換掉小括號及內容的方法

    JS正則替換掉小括號及內容的方法

    下面小編就為大家?guī)硪黄狫S正則替換掉小括號及內容的方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • js日期相關函數總結分享

    js日期相關函數總結分享

    最近寫了一個倒計時程序,因為經常要在手機端訪問,所以沒有引用jquery,對于用習慣jquery的我還真不習慣。下面簡單說明js日期相關函數,并說明實現倒計時的原理
    2013-10-10
  • JS實現對json對象排序并刪除id相同項功能示例

    JS實現對json對象排序并刪除id相同項功能示例

    這篇文章主要介紹了JS實現對json對象排序并刪除id相同項功能,涉及javascript針對json格式數據的遍歷、運算、判斷、添加、刪除等相關操作技巧,需要的朋友可以參考下
    2018-04-04
  • 使用FormData實現上傳多個文件

    使用FormData實現上傳多個文件

    這篇文章主要為大家詳細介紹了使用FormData實現上傳多個文件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12

最新評論