成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

codereview 思考和前端規(guī)范_023

FrancisSoung / 3799人閱讀

摘要:小駝峰式命名法首字母小寫(xiě)。函數(shù)命名動(dòng)詞含義返回值判斷是否可執(zhí)行某個(gè)動(dòng)作權(quán)限函數(shù)返回一個(gè)布爾值。

codereview 思考

提升代碼質(zhì)量

代碼復(fù)盤(pán)

有利于規(guī)范的落地

對(duì)業(yè)務(wù)的理解加深

表達(dá)溝通能力的增強(qiáng)

相互學(xué)習(xí)

儀式感

前端代碼規(guī)范
Airbnb 代碼規(guī)范 https://github.com/airbnb/jav...

eslint 代碼檢查 https://cn.eslint.org

korofileheader 注釋生成 https://marketplace.visualstu...

凹凸實(shí)驗(yàn)室代碼規(guī)范 https://guide.aotu.io/index.html

react 代碼規(guī)范 https://github.com/airbnb/jav...

vue 代碼規(guī)范 https://cn.vuejs.org/v2/style...

命名規(guī)則
Pascal Case 大駝峰式命名法:首字母大寫(xiě)。eg:StudentInfo、UserInfo、ProductInfo

Camel Case 小駝峰式命名法:首字母小寫(xiě)。eg:studentInfo、userInfo、productInfo
函數(shù)命名
動(dòng)詞 含義 返回值
can 判斷是否可執(zhí)行某個(gè)動(dòng)作(權(quán)限) 函數(shù)返回一個(gè)布爾值。true:可執(zhí)行;false:不可執(zhí)行
has 判斷是否含有某個(gè)值 函數(shù)返回一個(gè)布爾值。true:含有此值;false:不含有此值
is 判斷是否為某個(gè)值 函數(shù)返回一個(gè)布爾值。true:為某個(gè)值;false:不為某個(gè)值
get 獲取某個(gè)值 函數(shù)返回一個(gè)非布爾值
set 設(shè)置某個(gè)值 無(wú)返回值、返回是否設(shè)置成功或者返回鏈?zhǔn)綄?duì)象
load 加載某些數(shù)據(jù) 無(wú)返回值或者返回是否加載完成的結(jié)果
注釋規(guī)范 文件頂部注釋
/*
 * @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
引用

對(duì)所有引用都使用 const,不要使用 var

// bad
var a = 1
var b = 2

// good
const a = 1
const b = 2

如果引用是可變動(dòng)的,則使用let

// bad
var count = 1
if (count < 10) {
  count += 1
}

// good
let count = 1
if (count < 10) {
  count += 1
}
對(duì)象

請(qǐng)使用字面量值創(chuàng)建對(duì)象

/ bad
const a = new Object{}

// good
const a = {}

別使用保留字作為對(duì)象的鍵值,這樣在 IE8 下不會(huì)運(yùn)行

// bad
const a = {
  default: {},  // default 是保留字
  common: {}
}

// good
const a = {
  defaults: {},
  common: {}
}

請(qǐng)使用對(duì)象方法的簡(jiǎn)寫(xiě)方式

const job = "FrontEnd"

// bad
const item = {
  job: job
}

// good
const item = {
  job
}

-對(duì)象屬性值的簡(jiǎn)寫(xiě)方式要和聲明式的方式分組

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ù)組

請(qǐng)使用字面量值創(chuàng)建數(shù)組

// bad
const items = new Array()

// good
const items = []

向數(shù)組中添加元素時(shí),請(qǐng)使用 push 方法

const items = []

// bad
items[items.length] = "test"

// good
items.push("test")

使用拓展運(yùn)算符 ... 復(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 等方法時(shí),請(qǐng)使用 return 聲明,如果是單一聲明語(yǔ)句的情況,可省略 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)需要使用對(duì)象的多個(gè)屬性時(shí),請(qǐ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è)值時(shí),請(qǐng)同樣使用解構(gòu)賦值

const arr = [1, 2, 3, 4]

// bad
const first = arr[0]
const second = arr[1]

// good
const [first, second] = arr

函數(shù)需要回傳多個(gè)值時(shí),請(qǐng)使用對(duì)象的解構(gòu),而不是數(shù)組的解構(gòu)

// bad
function doSomething () {
  return [top, right, bottom, left]
}

// 如果是數(shù)組解構(gòu),那么在調(diào)用時(shí)就需要考慮數(shù)據(jù)的順序
const [top, xx, xxx, left] = doSomething()

// good
function doSomething () {
  return { top, right, bottom, left }
}

// 此時(shí)不需要考慮數(shù)據(jù)的順序
const { top, left } = doSomething()
字符串

字符串統(tǒng)一使用單引號(hào)的形式" "

// bad
const department = "JDC"

// good
const department = "JDC"

字符串太長(zhǎng)的時(shí)候,請(qǐng)不要使用字符串連接符換行,而是使用 +

const str = "前端js規(guī)范" +
  "前端js規(guī)范" +
  "前端js規(guī)范前端js規(guī)范前端js規(guī)范"

程序化生成字符串時(shí),請(qǐng)使用模板字符串

const test = "test"

// bad
const str = ["a", "b", test].join()

// bad
const str = "a" + "b" + test

// good
const str = `ab${test}`
函數(shù)

請(qǐng)使用函數(shù)聲明,而不是函數(shù)表達(dá)式

/ 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 模塊語(yǔ)法 importexport

// 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 的通配符 *,這樣可以確保你只有一個(gè)默認(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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/105769.html

相關(guān)文章

  • 如何成為優(yōu)秀的技術(shù)主管?你要做到這三點(diǎn)

    摘要:的報(bào)告進(jìn)一步證實(shí)了與成功項(xiàng)目最密切的因素是良好的需求管理,也就是項(xiàng)目的范圍管理,特別是管理好項(xiàng)目的變更。需求管理的第一步就是要梳理不同來(lái)源的需求,主要包括從產(chǎn)品定位出發(fā)外部用戶反饋競(jìng)爭(zhēng)對(duì)手情況市場(chǎng)變化以及內(nèi)部運(yùn)營(yíng)人員客服人員開(kāi)發(fā)人員的反饋。 showImg(https://upload-images.jianshu.io/upload_images/2509688-ac38883baf...

    mist14 評(píng)論0 收藏0
  • 前端代碼質(zhì)量管理(一)

    導(dǎo)語(yǔ): 隨著業(yè)務(wù)的增長(zhǎng)和開(kāi)發(fā)團(tuán)隊(duì)的成員快速增加,其中很多新人來(lái)自于五湖四海各大門(mén)派,在編碼的風(fēng)格和習(xí)慣中也出現(xiàn)各異。 通常在相互 codereview 時(shí)發(fā)現(xiàn)很多代碼上的問(wèn)題,久而久之代碼出現(xiàn)了代碼難以維護(hù)的問(wèn)題,甚至還會(huì)出現(xiàn)低級(jí)錯(cuò)誤。 因此,我嘗試在前端代碼質(zhì)量的管控上做了些探索,也總結(jié)了一些經(jīng)驗(yàn)分享給大家。 作者:鄭振波 本文大綱介紹 編碼規(guī)范 冗余文件與代碼 1. 編碼規(guī)范 在一些老項(xiàng)...

    yy13818512006 評(píng)論0 收藏0
  • 我們來(lái)聊聊技術(shù)債務(wù)

    摘要:用不了多久,我們就會(huì)發(fā)現(xiàn)我們已經(jīng)無(wú)力償還這份技術(shù)債務(wù)啦,只能重構(gòu)啦。當(dāng)然,最重要的其實(shí)是把技術(shù)債務(wù)的重要性提到一個(gè)被認(rèn)可的位置上。切記一些重要的技術(shù)債務(wù)遠(yuǎn)遠(yuǎn)比開(kāi)發(fā)新系統(tǒng)的優(yōu)先級(jí)要高很多。 技術(shù)債務(wù) 「技術(shù)債務(wù)」是開(kāi)發(fā)團(tuán)隊(duì)在設(shè)計(jì)或架構(gòu)選型時(shí),從短期效應(yīng)的角度選擇了一個(gè)易于實(shí)現(xiàn)的方案。但從長(zhǎng)遠(yuǎn)來(lái)看,這種方案會(huì)帶來(lái)更消極的影響,亦即開(kāi)發(fā)團(tuán)隊(duì)所欠的債務(wù)。 簡(jiǎn)單的說(shuō)就是為了快速地解決問(wèn)題,而采取...

    he_xd 評(píng)論0 收藏0
  • 我們來(lái)聊聊技術(shù)債務(wù)

    摘要:用不了多久,我們就會(huì)發(fā)現(xiàn)我們已經(jīng)無(wú)力償還這份技術(shù)債務(wù)啦,只能重構(gòu)啦。當(dāng)然,最重要的其實(shí)是把技術(shù)債務(wù)的重要性提到一個(gè)被認(rèn)可的位置上。切記一些重要的技術(shù)債務(wù)遠(yuǎn)遠(yuǎn)比開(kāi)發(fā)新系統(tǒng)的優(yōu)先級(jí)要高很多。 技術(shù)債務(wù) 「技術(shù)債務(wù)」是開(kāi)發(fā)團(tuán)隊(duì)在設(shè)計(jì)或架構(gòu)選型時(shí),從短期效應(yīng)的角度選擇了一個(gè)易于實(shí)現(xiàn)的方案。但從長(zhǎng)遠(yuǎn)來(lái)看,這種方案會(huì)帶來(lái)更消極的影響,亦即開(kāi)發(fā)團(tuán)隊(duì)所欠的債務(wù)。 簡(jiǎn)單的說(shuō)就是為了快速地解決問(wèn)題,而采取...

    Doyle 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

FrancisSoung

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<