自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

常見的編碼錯(cuò)誤,再不避免就完了

開發(fā) 后端 深度學(xué)習(xí)
犯錯(cuò)乃人之常情。然而,開發(fā)人員所犯的許多錯(cuò)誤是可以避免的。如果能避免本文提到的這些常見錯(cuò)誤,就能寫出更好、更簡(jiǎn)潔的代碼。

 犯錯(cuò)乃人之常情。

然而,開發(fā)人員所犯的許多錯(cuò)誤是可以避免的。如果能避免本文提到的這些常見錯(cuò)誤,就能寫出更好、更簡(jiǎn)潔的代碼。

[[313623]]

這不僅于自身有利,對(duì)那些需要查看代碼的其他開發(fā)人員也有利。所以避開常見錯(cuò)誤不僅僅是為自己——也是幫了團(tuán)隊(duì)一個(gè)大忙。

綜上所述,小芯這次為大家整理了一系列應(yīng)避免的常見錯(cuò)誤:

1. 變量的非描述性命名

好的變量名稱非常重要,再怎么強(qiáng)調(diào)也不為過。很多時(shí)候,你不是唯一一個(gè)項(xiàng)目開發(fā)人員,其他開發(fā)人員也需要了解你編寫的代碼。

選擇好的名字需要時(shí)間,但可以節(jié)省更多的時(shí)間。

2. 幻數(shù)和字符串

接著上文變量的非描述性命名,跳到下一項(xiàng),該項(xiàng)關(guān)于不給變量賦值,也被稱為幻數(shù)或魔法字符串。

維基百科定義:

幻數(shù)是唯一值,具有無法解釋的意義且多次出現(xiàn),可以而且應(yīng)該被命名常量替換。

來看看下面的代碼片段:

 

  1. for ($i = 1; $i <= 52; $i++) { 
  2.  
  3. ... 
  4.  

 

該例中的數(shù)字52就是一個(gè)幻數(shù)。沒有人明白為什么有52這個(gè)數(shù)字及其代表什么。為什么是52?為什么不能是64?這些是一年中的星期總數(shù)嗎?

更明晰的方法是:

 

  1. $cardDeckSize = 52;for ($i = 1;$i <= $cardDeckSize; $i++) { 
  2.  
  3. ... 
  4.  

 

現(xiàn)在每個(gè)人都會(huì)明白這是在循環(huán)一副紙牌。該代碼給其他開發(fā)人員提供了語(yǔ)境。除此之外,更改數(shù)值更容易,因?yàn)橹抵辉谧兞恐写鎯?chǔ)一次,不會(huì)重復(fù)。

幻數(shù)經(jīng)常在程序的不同位置多次使用,因此容易出錯(cuò)。

對(duì)于字符串來說也是如此,可采用同種方法:

 

  1. if (userPasswordIsValid($user,"6yP4cZ".$password)) { 
  2.  
  3. ... 
  4.  

 

6yP4cZ是什么?似乎非常隨意。

 

  1. $salt = "6yP4cZ";if(userPasswordIsValid($user, $salt.$password)) { 
  2.  
  3. ... 
  4.  

 

啊哈,現(xiàn)在就說得通了!

3. 代碼格式混亂

混淆代碼的格式通常是那些沒有豐富編程經(jīng)驗(yàn)的人才會(huì)犯的。如果問有著多年經(jīng)驗(yàn)的開發(fā)人員,問他們是否認(rèn)識(shí)一個(gè)測(cè)試人員或數(shù)據(jù)科學(xué)家混淆過代碼格式,他們可能都會(huì)點(diǎn)頭。這是由于缺乏經(jīng)驗(yàn)——除非使用像Python這樣的編程語(yǔ)言,可以避免很多此類失誤。

解決格式混亂最常見的方法是使用linter(應(yīng)用代碼校驗(yàn))?,F(xiàn)代集成開發(fā)系統(tǒng)(IDEs)也都有可能解決這個(gè)問題。有時(shí)需要安裝一個(gè)插件,有時(shí)也可以直接完成。

4. 在一個(gè)函數(shù)中進(jìn)行太多內(nèi)容

根據(jù)單一職責(zé)模式,一個(gè)函數(shù)只應(yīng)負(fù)責(zé)做一件事,只有一件事。筆者看到過太多函數(shù)集結(jié)了獲取、處理并呈現(xiàn)數(shù)據(jù)三個(gè)功能。把這個(gè)函數(shù)分開處理才是好的編程,一個(gè)函數(shù)獲取數(shù)據(jù),一個(gè)函數(shù)處理數(shù)據(jù),另一個(gè)函數(shù)顯示數(shù)據(jù)。

一個(gè)函數(shù)只關(guān)注一個(gè)內(nèi)容之所以重要,是因?yàn)檫@能讓其運(yùn)行更穩(wěn)健。比如說,從API(應(yīng)用程序接口)中獲取數(shù)據(jù)。如果API有變動(dòng)——例如,出現(xiàn)了一個(gè)新版本——那么如果處理代碼同屬一個(gè)函數(shù),那么處理代碼過程中斷的風(fēng)險(xiǎn)就會(huì)更大,這很可能會(huì)導(dǎo)致數(shù)據(jù)顯示也被中斷。

5. 硬編碼

硬編碼是將數(shù)據(jù)直接嵌入到程序或其他可執(zhí)行對(duì)象的源代碼中的軟件開發(fā)行為,而不是從外部獲取數(shù)據(jù)或在運(yùn)行時(shí)生成數(shù)據(jù)。

硬編碼的值不允許更改;它們是固定值。硬編碼被看作是一種反模式,或者至少是意味著一種壞代碼。

硬編碼最多的東西,不管是什么(有時(shí)甚至有效)原因,都是密碼和文件位置。

人們看到的很多硬編碼密碼場(chǎng)景是用于外部服務(wù)或API的身份驗(yàn)證。這些證書往往被硬編碼,但并不是很好的做法。

如果發(fā)現(xiàn)自己硬編碼了很多東西,真的應(yīng)該仔細(xì)審視自己寫的代碼,因?yàn)榇蠖鄶?shù)時(shí)候這都不是解決問題的好方法。

6. 注釋掉代碼

人們看到過包含多個(gè)函數(shù)的代碼塊被注釋掉。沒人知道為什么它還在那里,而且沒人知道這段代碼是否還有意義。但是,沒人會(huì)刪除這段代碼,而這是開發(fā)人員真正應(yīng)該做的事情。之所以沒人刪除這段代碼,是因?yàn)槊總€(gè)人都認(rèn)為其他人可能會(huì)用到。

只需刪除那段注釋掉的代碼即可。即使代碼不在新的版本中,如果有人想使用,該代碼仍然可以在版本控制中使用。

不過這只是筆者的個(gè)人看法。

責(zé)任編輯:華軒 來源: 讀芯術(shù)
相關(guān)推薦

2020-01-31 18:03:49

編碼開發(fā)代碼

2020-05-21 18:38:49

JavaScript前端技術(shù)

2018-08-06 22:06:06

云遷移云端云計(jì)算

2013-09-02 13:21:35

2020-03-02 08:35:05

物聯(lián)網(wǎng)實(shí)施物聯(lián)網(wǎng)IOT

2016-03-19 12:13:36

2023-05-11 09:06:50

錯(cuò)誤IT培訓(xùn)

2019-08-13 11:32:55

物聯(lián)網(wǎng)技術(shù)大數(shù)據(jù)

2010-09-14 15:17:51

2023-01-09 15:16:17

2023-05-06 10:50:41

IT培訓(xùn)IT團(tuán)隊(duì)

2020-11-04 10:11:22

區(qū)塊鏈塊鏈技術(shù)

2022-10-10 09:00:35

ReactJSX組件

2018-11-13 11:40:20

軟件定義廣域網(wǎng)SD-WAN安全

2009-06-22 15:01:00

java項(xiàng)目常見錯(cuò)誤

2023-07-14 14:25:00

Python語(yǔ)言錯(cuò)誤

2025-03-18 14:27:35

2018-03-21 07:01:59

工業(yè)物聯(lián)網(wǎng)IIoT物聯(lián)網(wǎng)

2018-07-11 05:24:05

機(jī)器學(xué)習(xí)人工智能數(shù)據(jù)

2013-08-15 09:47:07

云遷移云技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)