国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

codereview 思考和前端規范_023

FrancisSoung / 3752人閱讀

摘要:小駝峰式命名法首字母小寫。函數命名動詞含義返回值判斷是否可執行某個動作權限函數返回一個布爾值。

codereview 思考

提升代碼質量

代碼復盤

有利于規范的落地

對業務的理解加深

表達溝通能力的增強

相互學習

儀式感

前端代碼規范
Airbnb 代碼規范 https://github.com/airbnb/jav...

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

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

凹凸實驗室代碼規范 https://guide.aotu.io/index.html

react 代碼規范 https://github.com/airbnb/jav...

vue 代碼規范 https://cn.vuejs.org/v2/style...

命名規則
Pascal Case 大駝峰式命名法:首字母大寫。eg:StudentInfo、UserInfo、ProductInfo

Camel Case 小駝峰式命名法:首字母小寫。eg:studentInfo、userInfo、productInfo
函數命名
動詞 含義 返回值
can 判斷是否可執行某個動作(權限) 函數返回一個布爾值。true:可執行;false:不可執行
has 判斷是否含有某個值 函數返回一個布爾值。true:含有此值;false:不含有此值
is 判斷是否為某個值 函數返回一個布爾值。true:為某個值;false:不為某個值
get 獲取某個值 函數返回一個非布爾值
set 設置某個值 無返回值、返回是否設置成功或者返回鏈式對象
load 加載某些數據 無返回值或者返回是否加載完成的結果
注釋規范 文件頂部注釋
/*
 * @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
 */
類型 基本類型

字符串

數值

布爾類型

null

undefined

const foo = 1
let bar = foo

bar = 9

console.log(foo, bar) // 1, 9
復雜類型

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
}
對象

請使用字面量值創建對象

/ 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
}
數組

請使用字面量值創建數組

// bad
const items = new Array()

// good
const items = []

向數組中添加元素時,請使用 push 方法

const items = []

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

// good
items.push("test")

使用拓展運算符 ... 復制數組

// 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]

-使用數組的 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
})
解構賦值

當需要使用對象的多個屬性時,請使用解構賦值

// 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}`
}

當需要使用數組的多個值時,請同樣使用解構賦值

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

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

// good
const [first, second] = arr

函數需要回傳多個值時,請使用對象的解構,而不是數組的解構

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

// 如果是數組解構,那么在調用時就需要考慮數據的順序
const [top, xx, xxx, left] = doSomething()

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

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

字符串統一使用單引號的形式" "

// bad
const department = "JDC"

// good
const department = "JDC"

字符串太長的時候,請不要使用字符串連接符換行,而是使用 +

const str = "前端js規范" +
  "前端js規范" +
  "前端js規范前端js規范前端js規范"

程序化生成字符串時,請使用模板字符串

const test = "test"

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

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

// good
const str = `ab${test}`
函數

請使用函數聲明,而不是函數表達式

/ bad
const foo = function () {
  // do something
}

// good
function foo () {
  // do something
}

不要在非函數代碼塊中聲明函數

// 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 = {}) {
  // ...
}
模塊

使用標準的 ES6 模塊語法 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 的通配符 *,這樣可以確保你只有一個默認的 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)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105769.html

相關文章

  • 如何成為優秀的技術主管?你要做到這三點

    摘要:的報告進一步證實了與成功項目最密切的因素是良好的需求管理,也就是項目的范圍管理,特別是管理好項目的變更。需求管理的第一步就是要梳理不同來源的需求,主要包括從產品定位出發外部用戶反饋競爭對手情況市場變化以及內部運營人員客服人員開發人員的反饋。 showImg(https://upload-images.jianshu.io/upload_images/2509688-ac38883baf...

    mist14 評論0 收藏0
  • 前端代碼質量管理(一)

    導語: 隨著業務的增長和開發團隊的成員快速增加,其中很多新人來自于五湖四海各大門派,在編碼的風格和習慣中也出現各異。 通常在相互 codereview 時發現很多代碼上的問題,久而久之代碼出現了代碼難以維護的問題,甚至還會出現低級錯誤。 因此,我嘗試在前端代碼質量的管控上做了些探索,也總結了一些經驗分享給大家。 作者:鄭振波 本文大綱介紹 編碼規范 冗余文件與代碼 1. 編碼規范 在一些老項...

    yy13818512006 評論0 收藏0
  • 我們來聊聊技術債務

    摘要:用不了多久,我們就會發現我們已經無力償還這份技術債務啦,只能重構啦。當然,最重要的其實是把技術債務的重要性提到一個被認可的位置上。切記一些重要的技術債務遠遠比開發新系統的優先級要高很多。 技術債務 「技術債務」是開發團隊在設計或架構選型時,從短期效應的角度選擇了一個易于實現的方案。但從長遠來看,這種方案會帶來更消極的影響,亦即開發團隊所欠的債務。 簡單的說就是為了快速地解決問題,而采取...

    he_xd 評論0 收藏0
  • 我們來聊聊技術債務

    摘要:用不了多久,我們就會發現我們已經無力償還這份技術債務啦,只能重構啦。當然,最重要的其實是把技術債務的重要性提到一個被認可的位置上。切記一些重要的技術債務遠遠比開發新系統的優先級要高很多。 技術債務 「技術債務」是開發團隊在設計或架構選型時,從短期效應的角度選擇了一個易于實現的方案。但從長遠來看,這種方案會帶來更消極的影響,亦即開發團隊所欠的債務。 簡單的說就是為了快速地解決問題,而采取...

    Doyle 評論0 收藏0

發表評論

0條評論

FrancisSoung

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<