摘要:小駝峰式命名法首字母小寫。函數(shù)命名動詞含義返回值判斷是否可執(zhí)行某個動作權(quán)限函數(shù)返回一個布爾值。
codereview 思考
提升代碼質(zhì)量
代碼復(fù)盤
有利于規(guī)范的落地
對業(yè)務(wù)的理解加深
表達溝通能力的增強
相互學(xué)習(xí)
儀式感
前端代碼規(guī)范Airbnb 代碼規(guī)范 https://github.com/airbnb/jav...命名規(guī)則eslint 代碼檢查 https://cn.eslint.org
korofileheader 注釋生成 https://marketplace.visualstu...
凹凸實驗室代碼規(guī)范 https://guide.aotu.io/index.html
react 代碼規(guī)范 https://github.com/airbnb/jav...
vue 代碼規(guī)范 https://cn.vuejs.org/v2/style...
Pascal Case 大駝峰式命名法:首字母大寫。eg:StudentInfo、UserInfo、ProductInfo Camel Case 小駝峰式命名法:首字母小寫。eg:studentInfo、userInfo、productInfo函數(shù)命名
動詞 | 含義 | 返回值 |
---|---|---|
can | 判斷是否可執(zhí)行某個動作(權(quán)限) | 函數(shù)返回一個布爾值。true:可執(zhí)行;false:不可執(zhí)行 |
has | 判斷是否含有某個值 | 函數(shù)返回一個布爾值。true:含有此值;false:不含有此值 |
is | 判斷是否為某個值 | 函數(shù)返回一個布爾值。true:為某個值;false:不為某個值 |
get | 獲取某個值 | 函數(shù)返回一個非布爾值 |
set | 設(shè)置某個值 | 無返回值、返回是否設(shè)置成功或者返回鏈?zhǔn)綄ο?/td> |
load | 加載某些數(shù)據(jù) | 無返回值或者返回是否加載完成的結(jié)果 |
/* * @description: * @Author: xiaoping.zhang * @Date: 2019-02-17 10:22:28 * @LastEditors: xiaoping.zhang * @LastEditTime: 2019-02-17 10:22:28 */代碼片段注釋
/** * @Author: xiaoping.zhang * @description: * @return: * @Date: 2019-07-17 22:35:35 */類型 基本類型
字符串
數(shù)值
布爾類型
null
undefined
const foo = 1 let bar = foo bar = 9 console.log(foo, bar) // 1, 9復(fù)雜類型
object
array
function
const foo = [1, 2, 3] const bar = foo bar[0] = 9 console.log(foo[0], bar[0]) // 9, 9引用
對所有引用都使用 const,不要使用 var
// bad var a = 1 var b = 2 // good const a = 1 const b = 2
如果引用是可變動的,則使用let
// bad var count = 1 if (count < 10) { count += 1 } // good let count = 1 if (count < 10) { count += 1 }對象
請使用字面量值創(chuàng)建對象
/ bad const a = new Object{} // good const a = {}
別使用保留字作為對象的鍵值,這樣在 IE8 下不會運行
// bad const a = { default: {}, // default 是保留字 common: {} } // good const a = { defaults: {}, common: {} }
請使用對象方法的簡寫方式
const job = "FrontEnd" // bad const item = { job: job } // good const item = { job }
-對象屬性值的簡寫方式要和聲明式的方式分組
onst job = "FrontEnd" const department = "JDC" // bad const item = { sex: "male", job, age: 25, department } // good const item = { job, department, sex: "male", age: 25 }數(shù)組
請使用字面量值創(chuàng)建數(shù)組
// bad const items = new Array() // good const items = []
向數(shù)組中添加元素時,請使用 push 方法
const items = [] // bad items[items.length] = "test" // good items.push("test")
使用拓展運算符 ... 復(fù)制數(shù)組
// bad const items = [] const itemsCopy = [] const len = items.length let i // bad for (i = 0; i < len; i++) { itemsCopy[i] = items[i] } // good itemsCopy = [...items]
-使用數(shù)組的 map 等方法時,請使用 return 聲明,如果是單一聲明語句的情況,可省略 return
// good [1, 2, 3].map(x => { const y = x + 1 return x * y }) // good [1, 2, 3].map(x => x + 1) // bad const flat = {} [[0, 1], [2, 3], [4, 5]].reduce((memo, item, index) => { const flatten = memo.concat(item) flat[index] = flatten }) // good const flat = {} [[0, 1], [2, 3], [4, 5]].reduce((memo, item, index) => { const flatten = memo.concat(item) flat[index] = flatten return flatten }) // bad inbox.filter((msg) => { const { subject, author } = msg if (subject === "Mockingbird") { return author === "Harper Lee" } else { return false } }) // good inbox.filter((msg) => { const { subject, author } = msg if (subject === "Mockingbird") { return author === "Harper Lee" } return false })解構(gòu)賦值
當(dāng)需要使用對象的多個屬性時,請使用解構(gòu)賦值
// bad function getFullName (user) { const firstName = user.firstName const lastName = user.lastName return `${firstName} ${lastName}` } // good function getFullName (user) { const { firstName, lastName } = user return `${firstName} ${lastName}` } // better function getFullName ({ firstName, lastName }) { return `${firstName} ${lastName}` }
當(dāng)需要使用數(shù)組的多個值時,請同樣使用解構(gòu)賦值
const arr = [1, 2, 3, 4] // bad const first = arr[0] const second = arr[1] // good const [first, second] = arr
函數(shù)需要回傳多個值時,請使用對象的解構(gòu),而不是數(shù)組的解構(gòu)
// bad function doSomething () { return [top, right, bottom, left] } // 如果是數(shù)組解構(gòu),那么在調(diào)用時就需要考慮數(shù)據(jù)的順序 const [top, xx, xxx, left] = doSomething() // good function doSomething () { return { top, right, bottom, left } } // 此時不需要考慮數(shù)據(jù)的順序 const { top, left } = doSomething()字符串
字符串統(tǒng)一使用單引號的形式" "
// bad const department = "JDC" // good const department = "JDC"
字符串太長的時候,請不要使用字符串連接符換行,而是使用 +
const str = "前端js規(guī)范" + "前端js規(guī)范" + "前端js規(guī)范前端js規(guī)范前端js規(guī)范"
程序化生成字符串時,請使用模板字符串
const test = "test" // bad const str = ["a", "b", test].join() // bad const str = "a" + "b" + test // good const str = `ab${test}`函數(shù)
請使用函數(shù)聲明,而不是函數(shù)表達式
/ bad const foo = function () { // do something } // good function foo () { // do something }
不要在非函數(shù)代碼塊中聲明函數(shù)
// bad if (isUse) { function test () { // do something } } // good let test if (isUse) { test = () => { // do something } }
不要使用 arguments,可以選擇使用 ...
// bad function test (opts) { opts = opts || {} } // good function test (opts = {}) { // ... }模塊
使用標(biāo)準(zhǔn)的 ES6 模塊語法 import 和 export
// bad const util = require("./util") module.exports = util // good import Util from "./util" export default Util // better import { Util } from "./util" export default Util
不要使用 import 的通配符 *,這樣可以確保你只有一個默認(rèn)的 export
// bad import * as Util from "./util" // good import Util from "./util"迭代器
不要使用 iterators
const numbers = [1, 2, 3, 4, 5] // bad let sum = 0 for (let num of numbers) { sum += num } // good let sum = 0 numbers.forEach(num => sum += num) // better const sum = numbers.reduce((total, num) => total + num, 0)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/105769.html
摘要:的報告進一步證實了與成功項目最密切的因素是良好的需求管理,也就是項目的范圍管理,特別是管理好項目的變更。需求管理的第一步就是要梳理不同來源的需求,主要包括從產(chǎn)品定位出發(fā)外部用戶反饋競爭對手情況市場變化以及內(nèi)部運營人員客服人員開發(fā)人員的反饋。 showImg(https://upload-images.jianshu.io/upload_images/2509688-ac38883baf...
導(dǎo)語: 隨著業(yè)務(wù)的增長和開發(fā)團隊的成員快速增加,其中很多新人來自于五湖四海各大門派,在編碼的風(fēng)格和習(xí)慣中也出現(xiàn)各異。 通常在相互 codereview 時發(fā)現(xiàn)很多代碼上的問題,久而久之代碼出現(xiàn)了代碼難以維護的問題,甚至還會出現(xiàn)低級錯誤。 因此,我嘗試在前端代碼質(zhì)量的管控上做了些探索,也總結(jié)了一些經(jīng)驗分享給大家。 作者:鄭振波 本文大綱介紹 編碼規(guī)范 冗余文件與代碼 1. 編碼規(guī)范 在一些老項...
摘要:用不了多久,我們就會發(fā)現(xiàn)我們已經(jīng)無力償還這份技術(shù)債務(wù)啦,只能重構(gòu)啦。當(dāng)然,最重要的其實是把技術(shù)債務(wù)的重要性提到一個被認(rèn)可的位置上。切記一些重要的技術(shù)債務(wù)遠遠比開發(fā)新系統(tǒng)的優(yōu)先級要高很多。 技術(shù)債務(wù) 「技術(shù)債務(wù)」是開發(fā)團隊在設(shè)計或架構(gòu)選型時,從短期效應(yīng)的角度選擇了一個易于實現(xiàn)的方案。但從長遠來看,這種方案會帶來更消極的影響,亦即開發(fā)團隊所欠的債務(wù)。 簡單的說就是為了快速地解決問題,而采取...
摘要:用不了多久,我們就會發(fā)現(xiàn)我們已經(jīng)無力償還這份技術(shù)債務(wù)啦,只能重構(gòu)啦。當(dāng)然,最重要的其實是把技術(shù)債務(wù)的重要性提到一個被認(rèn)可的位置上。切記一些重要的技術(shù)債務(wù)遠遠比開發(fā)新系統(tǒng)的優(yōu)先級要高很多。 技術(shù)債務(wù) 「技術(shù)債務(wù)」是開發(fā)團隊在設(shè)計或架構(gòu)選型時,從短期效應(yīng)的角度選擇了一個易于實現(xiàn)的方案。但從長遠來看,這種方案會帶來更消極的影響,亦即開發(fā)團隊所欠的債務(wù)。 簡單的說就是為了快速地解決問題,而采取...
閱讀 3085·2019-08-30 15:56
閱讀 1239·2019-08-29 15:20
閱讀 1577·2019-08-29 13:19
閱讀 1484·2019-08-29 13:10
閱讀 3388·2019-08-26 18:27
閱讀 3074·2019-08-26 11:46
閱讀 2238·2019-08-26 11:45
閱讀 3766·2019-08-26 10:12