編碼規範是成為一個優質程序員的重要一課,它是編程的樣式的模闆。這篇文章将介紹12中編程規範及技巧,相信學習之後你的代碼一定會提升一個檔次。
首先我們要明确,為什麼要遵循編碼規範?遵循這樣的約定有什麼好處?
1. 遵循規範可以寫出幹淨簡潔的代碼
2. 可以代碼的質量
3. 提升代碼的可讀性
4. 使代碼維護更加容易
代碼整潔之道一書的作者羅伯特曾經說過:
“幹淨的代碼既簡單又直接。幹淨的代碼讀起來像寫得很好的散文。簡潔的代碼永遠不會掩蓋設計者的意圖,而是充滿清晰的抽象和直接的控制線。” -羅伯特·馬丁(Robert C. Martin)
1.不要出現莫名其妙的數字
很多程序員在實現功能的時候會分配一個沒有明确意義的數字,用于特定的目的,寫完這個數字後沒有即使去做注釋,然後過兩天當程序出現問題時,翻看代碼碰到這個數字,連自己都忘了它的意義。當程序需要固定的數值參與時,給予特定的名稱。
案例
//錯誤的示範:
for(let i = 0; i i ){
//do something
}
//正确的示範:
let NUMBER_OF_STUDENTS= 50
for(let i = 0; i NUMBER_OF_STUDENTS; i ){
//do something
}
2.深度嵌套
有些程序需要使用到無數次的嵌套循環,看着看着就暈了,這時可以将所有循環提取到單獨的函數中。
假設有一個包含兩層嵌套的數組,想要拿到最後一個數組的值?一般情況下開發者都會使用嵌套循環,但不是最佳的辦法。可以嘗試使用函數的反複調用來完成操作執行相同操作的,這樣一來代碼重複性更小,更易于閱讀、重用性高。
// 錯誤示範
const array = [ [ [Shoaib Mehedi] ] ]
array.forEach((firstArr) ={
firstArr.forEach((secondArr) = {
secondArr.forEach((element) = {
console.log(element);
})
})
})
// 正确示範
const array = [ [ [Shoaib Mehedi] ] ]
const getValuesOfNestedArray = (element) = {
if(Array.isArray(element)){
return getValuesOfNestedArray(element[0])
}
return element
}
getValuesOfNestedArray(array)
3.注釋
注釋是一個老生常談的話題,很多人不重視,為了快速完成項目忽略注釋,導緻後期修改和複用出現很大問題,得不償失。
4.避免創建大函數
當一個函數或一個類需要實現的功能太多時,建議将其分成多個小的函數。
假設我們需要加減兩個數字。我們可以用一個功能做到這一點。但是好的做法是将它們分為兩部分。如果有單獨的功能,則可以在整個應用程序中重複使用。
// 錯誤示範
const addSub = (a,b) = {
// add
const addition = a b
// sub
const sub = a-b
// returning as a string
return `${addition}${sub}`
}
//正确示範
// add
const add = (a,b) = {
return a b
}
// sub
const sub = (a,b) = {
return a-b
}
5.重複代碼
重複代碼也是常見的問題,如遇到此情況,将重複代碼提取到函數中。
繼續用上面的第2點“深層嵌套”中的例子來舉例。
// 錯誤示範
const array = [ [ [Shoaib Mehedi] ] ]
array.forEach((firstArr) ={
firstArr.forEach((secondArr) = {
secondArr.forEach((element) = {
console.log(element);
})
})
})
// 正确示範
const array = [ [ [Shoaib Mehedi] ] ]
const getValuesOfNestedArray = (element) = {
if(Array.isArray(element)){
return getValuesOfNestedArray(element[0])
}
return element
}
getValuesOfNestedArray(array)
6.變量命名
變量命名也是有講究的,好的變量命名可以讓代碼更加通俗易懂,一般來說命名遵循以下标準,名稱以小寫字母開頭,之後的每一個單詞首字母都用大寫,比如駱駝的大小寫為camelCase
函數和變量都必須遵循此規則。
示例代碼:
let camelCase = const thisIsCamelCase = () = { //so something}
7.函數命名
函數的命名基本與上述提到的變量命名規則基本一樣,但需要注意的是,命名盡量注意詳細,比如我們需要一個能夠獲取用戶銀行信息的功能,那麼要盡量将命名具體化,如下
錯誤的示範:getUserInfo。
正确的示範:getUserBankInfo
8.命名時注意動詞的使用
比如我們需要從數據庫中獲取用戶信息,函數的名稱可以是userInfo,user或者fetchUser,但我推薦使用含有動詞的命名 getUser。
//正确示範
function getUser(){//do something}
9. 常量值所有都大寫
常量命名都使用全大寫的名稱,并用下劃線分割所有單詞
//正确示範
const DAYS_IN_A_YEAR = 365;
10. 避免變量使用字母
在功能性的命名中盡量避免使用單個字母,不過如果在循環中,可以忽略這一點
//錯誤示範
const q = () = {
//....
}
//正确示範
const query = () = {
//....
}//this is also okay
for(let i = 0;i i ){
//...
}
結論
從長遠來看,遵循代碼編寫規範,對開發者的自身發展來說是百利而無一害的。每個項目的生命周期都很長,在很長的周期中誰也無法确定會用到之前的哪段代碼,哪個功能。所以對現在的每一段代碼負責,就是對以後的自己負責。加油,程序猿!!!
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!