一個命名提供的信息量越多,就是越好的命名。vue
聲明一個變量,是編程裏最簡單的事了。react
在學習編程之初,先要會的就是聲明一個變量。編程
int a = 1;
複製代碼
命名又是咱們工做中最有難度的事。bash
隨着咱們技術能力的提升,作的項目也愈來愈大,業務愈來愈複雜。命名稍微不注意,就變成一堆無心義或者誤導咱們的字符串。async
之因此說命名困難,個人想法是命名不單是想一個單詞就ok。須要更多的理解業務,理解咱們使用的技術,才能作到最貼切的命名。函數
回到咱們的宗旨,來看看命名都會給咱們提供哪些信息量。學習
var username = '卡哇伊';
複製代碼
這段代碼中有個變量username,它爲咱們提供了一個信息。ui
var _username = '卡哇伊';
複製代碼
這段代碼是有個變量_username,它爲咱們提供了兩個信息。this
class User {
constructor() {
this._name = '卡哇伊';
}
getName() {
return this._name;
}
setName(val) {
this._name = val;
}
}
複製代碼
讀到這裏,我想你大概知道我要說的什麼意思了。咱們經過命名的格式,用開頭有下劃線表明私有變量,用首字母大寫表明是一個類。區分不一樣類型的成員,達到讓代碼擁有更多信息量的目的。spa
那麼,重點就是掌握一套這樣的命名規則,並嚴格貫徹這套規則。
這裏拿React寫一個頁面做爲例子 首先我要新建一個Pages文件夾,而後新建一個ProductListPage文件夾,在裏面創建index.js文件,代碼以下:
class ProductListPage extends Component {
constructor(props) {
this.state = {
productList:[],
categroyOptions:[],
}
}
componentDidMount() { ... }
async requestProductList() { ... }
async requestCategroyOptions() { ... }
renderProductList() {
const { productList } = this.state;
return productList.map(product => { ... });
}
renderHeader() { ... }
render() { ... }
}
複製代碼
嗯,每一個命名都滿滿的信息量,咱們就獲得了易讀又工整的代碼。
值得注意的是,命名是件須要自律和習慣的事。好比某一天增長了一個產品包裝頁,我寫成了goodsPackingPage。這樣‘產品’這個有特殊業務含義的字段在項目中有了兩個命名,product和goods,這就形成了必定的混亂。
我見過這樣一個單文件,有2000多行的代碼,一樣表明品類,結果有三個單詞type,catagory,class。起初我覺得是不一樣的意思,這就形成了閱讀的困難。你的代碼越複雜,命名不當形成的問題越嚴重。
因此咱們在寫代碼時,創建的命名秩序,就不能破壞它。一旦破壞,本來能夠傳達的信息,便再也不可信。好比新寫的私有字段不如下劃線開頭。那麼之後在函數中看到變量,就不能根據是否已下劃線開頭,判斷它是不是私有變量了。
判斷一個命名是否糟糕,就是看它有沒有傳達信息。更糟糕的是,它傳達錯誤的信息。
好的命名就是能傳達更多信息。依靠的是你創建的命名秩序。
若是你對整潔代碼頗有興趣。推薦《代碼整潔之道》這本書。裏面有更多詳細的關於命名的技巧知識。