程序是寫給人讀的,只是偶爾讓計算機執行一下。就執行而言,計算機只關心對錯,可是就團隊協做而言,風格一致且優雅的代碼,會讓人看上去賞心悅目(聲淚俱下)。所以,肯定編碼風格,就尤其重要javascript
本文就javascript而言,對於使用vue等框架,使用Eslint或者團隊已經強制推行本身的風格,僅供參考css
4個空格(製表符)html
通常編輯器按下tab時,默認是4個空格。所以,小編推薦4個空格,至少看上去是最舒服的vue
推薦指數: ??java
以;(分號)結尾編程
有賴於分析器的分號自動插入機制,js代碼省略分號也是能夠正常工做的。就JSLint和JSHint而言,省略空格,都會有警號。還有更麻煩的是,若是js是下面這5個字符之一,js就不會對上一行自動添加分號 ( [ / + -數組
x = y (function () { })()
便會等價於網絡
x = y(function () {})()app
推薦指數: ????框架
在編碼規範中,空行是最容易忽視的一方面。並且,就編程人員而言,仁者見仁,智者見智。下面,小編就簡單闡述一下本身的看法。
何時要有空行?
function getName () { // 代碼塊 } function getAge () { // 代碼塊 }
推薦指數: ??
var name = null function getName () { }
推薦指數: ????
/* 取得屬性值name */ var name = null /* 取得屬性值age */ var age = null
推薦指數: ???
當一行長度受到單行最大字符限制,或者一行過長影響代碼閱讀時,須要咱們手動拆成多行。此時,咱們須要在運算符換行,運算符寫在上一行的末尾。
給變量賦值時,第二行應該與第一行賦值運算符後的變量對齊
var result = name + age + gender + msg + like;
推薦指數: ??
運算符後進行換行,下一行會增長1~2個縮進。小編一般使用1個縮進
if (year == '2019' && month == '8' && day == '23') { // 代碼塊 }
推薦指數: ??
只要寫代碼,就在聲明變量和函數,或者走在聲明變量和函數的路上。所以,變量和和函數聲明的可讀性就相當重要。
聲明變量的長度要儘量短,並抓住要點,且儘量的體現數據類型。對於數組,通常採用 +s 的複數形式
/* 好的作法 */ var count = 1; var name = 'jack' var status = false var names = ['jack', 'john', 'dave'] /* 很差的作法 變量聲明向函數,容易產生誤解 */ var getCount = 10 var getName = 'jack' var isUse = false
推薦指數: ???
對於函數來講,第一個單詞最好是動詞,如get, set, has, is, toggle, can, delete, update, insert, add等,推薦使用駝峯明明法。函數的長度必定要見明知意,哪怕長度稍微長一點,都是值得的
/* 好的作法 */ function getName () { return name } function checkPermissionsBySession () { }
推薦指數: ????
起首的大括號要跟在關鍵字的後面。由於Javascript會自動添加句末的分號,致使一些難以察覺的錯誤。爲了不這一類錯誤,須要寫成下面這樣
/* 好的作法 */ return { name: 'jack' } /* 很差的走法 解析器會解析 return ; 後面的代碼就不會執行 */ return { name: 'jack' }
推薦指數: ????
通常來講: 全部語法元素與左括號之間,都有一個空格。下面這兩種狀況除外
/* 好的寫法 */ if (a === b) {} for (let i=0; i<10; i++) {} return (a + b) function getName(arr) { } getName()
推薦指數: ???
使用null的最好方式方式是看做一個佔位符。而不是用null來檢測是否傳參,或者檢測是否變量初始化
/* 好的作法 */ var name = null function getName () { if (!condition) { return null } } /* 很差的作法 */ var name; if (name != null) { } function getName(arg1, arg2) { if (arg3 != null) { } }
推薦指數: ??
沒有被初始化的變量都有一個初始值,即undefined
var age; console.log(typeof age) // undefined
推薦指數: ??
js具備強制類型轉換的機制,強制類型轉換會驅使某些變量自動轉換成其餘不一樣類型。可能會形成意想不到的結果。雖然使用相等,在開發過程當中可能會加快開發速度,可是一旦出現問題,排查起來花費的時間會多得多。所以,小編強烈建議使用全等和不全等
/* 很差的作法 */ console.log(1 == true) // true console.log(0 == '') // true
推薦指數: ???
確保你的函數不會對全局變量有依賴,這將加強您對代碼的可測試性。尤爲是團隊開發,儘量的避免全局變量
(function(){ })();
可能會形成內存消耗多大,甚至內存泄漏等狀況
所以,儘量的不要使用全局變量,若是不得不使用,請使用所有的大寫字母進行命名。如:
MAX_SIZE // 推薦
推薦指數: ????
鬆耦合: 當你可以修改一個組件而不須要更改其餘的組件。鬆耦合對於代碼維護性相當重要,由於你絕對不但願開發人員在修改代碼時,破壞或者改動其餘的代碼
/* 好的作法 */ var el = document.getElementById('div1'); el.classList.add('blue') document.body.appendChild(el) /* 很差的作法。沒有將css和js進行解藕 */ var el = document.getElementById('div2'); el.style.width = '200px'; el.style.height = '200px' el.style.background = 'blue'; document.body.appendChild(el)
推薦指數: ???
/* 很差的作法。沒有實現html和js解藕 */ var ul = document.createElement('ul'); ul.innerHTML = ` <li>li</li> <li>li</li> <li>li</li> ` document.body.appendChild(ul)
推薦指數: ???
對於應用中寫死的值,可能會頻繁的更改。所以,將配置數據從代碼中抽離,保存在config對象中,這樣對配置數據的修改能夠徹底和使用這些數據的代碼隔離開來
URL = 'http://xxxxx/index.html?xxx=123
推薦指數: ????
標準的模塊應該是「分工明細,職責單一,不牽扯需求邏輯」。就像是釘子,哪裏須要往哪裏按。使用模塊化和組件化避免了造輪子的重複性工做,且下降了耦合,避免了邏輯錯誤,使你的代碼產生質的飛躍