魯迅曾經說過: 全部代碼都不是一次性的,不管是變動仍是閱讀,一語中的的名字即是好的設計。vue
李狗蛋爲了和本身心儀的女神在一塊兒,使上了渾身解數,讓咱們看看他是如何逆襲的。restful
故事若有雷同純屬巧合,如下命名方式只是參考,沒有真正的標準框架
狗蛋想看女神的詳細我的信息,他調出了官網的代碼:模塊化
// list便可能是列表也有多是表格
const configListData;
const configList;
const configData;
const configFormList;
......
複製代碼
WTF!這些變量名根本如出一轍好嗎?我到底該看哪一個?函數
讓咱們來看一下elementui的命名:優化
表格: table
複製代碼
表單:form
複製代碼
列表:list
複製代碼
採用機翻每每會出現同名非同義的狀況,須要對基礎組件置頂一個本身的規範,設想一下,若是多人維護統一套代碼,每一個人風格不統一又沒有註釋,很容易出現神祕變量。ui
造輪子儘可能讓名字單一,並用統一的命名規則去封裝組件,例如:spa
{
data:'', //數據
config:'', //配置
size:'', //尺寸
style:'', //樣式
state:'', //狀態
show:'', //展現
......
}
複製代碼
儘可能避免語義相近的變量,因如今大都使用ui框架的狀況,若是頁面中出現倆種相同類型的組件建議使用這種方式取名:設計
studentTable, // 內容-組件模塊 (若是有不少學生的表格,最好說明是什麼學生)
複製代碼
狗蛋好不容易理好了表格,打算用爛熟於心的女神三圍作查詢條件,OMG!這查詢條件也太多了吧:3d
//vue中的data
這裏用了蒼老師的.....
{
age:'18',
sex:'female',
major:'english', //專業
class:'201',
bust:'90', //胸圍
waistline:'58', //腰圍
hips:'83', //臀圍
table:'',
}
table.search({waistline,hips,bust});
複製代碼
報錯:正經學校怎麼可能會有三圍啊!
表格的查詢條件有不少,然而上面這一塊並不全是學生表格中的查詢條件。
狗蛋一怒之下修改告終構:
{
// 查詢學生條件
studentSearchData:{
age:'18',
sex:'female',
major:'english', //專業
class:'201',
},
// 查詢私人條件
privateSearchData: {
bust:'90', //胸圍
waistline:'58', //腰圍
hips:'83', //臀圍
},
table:'',
}
table.search(studentSearchData); //少寫幾個變量
複製代碼
這樣經過業務領域來抽象成個對象(類)來區分業務,在複雜的業務場景裏不只能夠確認數據的職責鏈,經過命名讓代碼顯得更加'模塊化',甚至在一些功能裏能夠更加便利的調用。
狗蛋爲了維護女神的形象(佔爲己有)想把隱私條件修改(保存)了:
changeSearchData('privateSearchData');
updateSearchData('privateSearchData');
複製代碼
因此是哪一個是修改函數?
建議採用 操做(restful)+內容 / 內容+行爲 來命名
searchData(); //獲取 加get畫蛇添足,我的風格大家也能夠加
initSearchData(); //刪除
addSearchData(); //添加
updateSearchData(); //更新
removeSearchData(); //移除某個屬性
deleteSearchData(); //刪除
searchDataToString(); //轉換數據格式
.....
複製代碼
幫女神清空購物車,計算她雙11購物車的消費金額:
(數量 * 單價)* 折扣 + 距離 * 運費
function Price(){
return (order.quantity * order.itemPrice) * order.discount
+ distance * shipping
}
複製代碼
狗蛋想修改購物車的計算邏輯可是無從下手
咱們的項目裏每每會出現這種代碼,這並非什麼錯誤的代碼(需求緊、懶癌),可是咱們必定要重構它。這個函數中的代碼過於複雜,以致於用一個名字沒法解釋它的具體行爲
用單一職責重構它:
// 基本價格 = 數量 * 單價
function basePrice (){
return order.quantity * order.itemPrice;
}
// 折後價格 = 基本價格 * 折扣
function discountPrice (basePrice){
return basePrice * order.discount;
}
// 運費價格 = 千米數 * 運費
function shippingtPrice (){
return distance * shipping;
}
function Price(){
return discountPrice(basePrice()) + shippingtPrice();
}
......
複製代碼
寫了個大概,根據具體業務還能優化,重構後的好處是:
徹底是我的風格了:
參數不宜過多,超過3個就須要考慮能夠組合成對象的形式參考(變量case2)
參數統一,若是是同一流程中的傳參,建議用同一參數名方便快捷搜索快速定位(ctrl+f), 以下代碼能夠經過movieName快速定位相關處理流程
const movie = [];
function updateDesignation(){
const movieName = 'SSNI-436';
downLoadMovie(movieName);
}
....
此處省略一萬行代碼,可是咱們能夠經過movieName快速定位參數走向
....
function downLoadMovie(movieName){
movie.push(movieName);
}
複製代碼
女神低下頭在狗蛋的耳邊輕聲說道,其實你不用爲我復出那麼多,我就喜歡你寫代碼的樣子,真的好帥。(我就喜歡你人傻錢多)
狗蛋:嘿嘿,女神原來對代碼感興趣,你認爲何語言是世界上最好的語言?
女神:。。。。。。
請不要再把代碼寫成推理小說,不是每一個人都是偵探
若是以爲不錯,請素質四連,點贊、關注、轉發、評論,畢竟要恰飯的嘛