欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解一些適用于Node.js的命名約定

 更新時(shí)間:2019年12月08日 10:32:00   作者:Liutos  
這篇文章主要介紹了詳解一些適用于Node.js的命名約定,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

序言

There are only two hard things in Computer Science: cache invalidation and naming things.
-- Phil Karlton

我喬魯諾·喬巴拿有一個(gè)夢(mèng)想,便是要成為程序員巨星。但如果你看過(guò)我寫(xiě)的代碼,便知道我還遠(yuǎn)遠(yuǎn)夠不上“巨星”二字。我的代碼中有許多不一致的命名:

  1. 常量的命名時(shí)而是全大寫(xiě)的(如WAIT_CONFIRM),時(shí)而是全小寫(xiě)的;
  2. 某個(gè)項(xiàng)目大部分命名用的是camel case(如TaskController),但由于數(shù)據(jù)庫(kù)中的列名用了snake case(如context_id),導(dǎo)致項(xiàng)目中與數(shù)據(jù)庫(kù)列有關(guān)的代碼混用了camel case和snake case(如restricted_hours[new Date(timestamp * 1000).getHours()] = 1;);
  3. 同樣是構(gòu)造復(fù)雜對(duì)象的函數(shù),它們的前綴可能會(huì)是build、create、make,甚至compute中的任何一個(gè);
  4. 明明是一個(gè)數(shù)組,卻用了單數(shù)的order作為變量名。

之所以如此混亂,正是因?yàn)槲覜](méi)有遵循一套一致的命名規(guī)則。每當(dāng)我在一個(gè)項(xiàng)目中蹦出一些新想法時(shí),便會(huì)躍躍欲試——不,我真的就用上了。我不曾整理過(guò)自己的命名規(guī)則(天哪我已經(jīng)寫(xiě)了三年的JavaScript了),以至于無(wú)從判斷“新想法”是否真的新——也許它是一個(gè)已經(jīng)被我拋棄的規(guī)則。

為了不再深陷不一致命名的泥潭,我定下了本篇的命名規(guī)則,期望它們?yōu)橐院蟮奈抑更c(diǎn)迷津。

變量名

通用規(guī)則

  • 變量名使用camel case的命名風(fēng)格。例如,使用namingConvention,而不是naming_convention;
  • 在盡量遵循規(guī)則的基礎(chǔ)上隨機(jī)應(yīng)變。

變量名的單復(fù)數(shù)規(guī)則

  • 如果一個(gè)變量存儲(chǔ)的值的類(lèi)型為數(shù)組(即該變量作為Array.isArray方法的參數(shù)時(shí)結(jié)果為真),那么變量的名稱(chēng)就使用復(fù)數(shù)形式。例如,使用fruits = []而不是fruit = []。
  • 如果一個(gè)變量存儲(chǔ)的值的類(lèi)型為集合(即Set這個(gè)類(lèi)型),那么變量的名稱(chēng)應(yīng)當(dāng)使用單詞unique為前綴。例如,使用uniqueUserIds而不是userIdSet。

布爾變量的命名規(guī)則

如果一個(gè)變量的值的類(lèi)型為boolean,那么變量的名稱(chēng)應(yīng)當(dāng)以下列單詞為前綴:

  • is。當(dāng)變量表達(dá)一個(gè)二元狀態(tài)的時(shí)候,例如isFull、isEmpty。在is后面的應(yīng)當(dāng)是一個(gè)形容詞;
  • has。當(dāng)變量表達(dá)歷史上是否發(fā)生過(guò)某個(gè)事件的時(shí)候,例如hasPaid、hasArrived。在has后面的應(yīng)當(dāng)是一個(gè)動(dòng)詞,并且采用過(guò)去分詞;
  • can。當(dāng)變量表達(dá)某種權(quán)限的時(shí)候,例如canWrite、canExecute。在can后面的應(yīng)當(dāng)是一個(gè)動(dòng)詞,并且采用現(xiàn)在分詞。

數(shù)值變量的命名規(guī)則

  • 如果變量中存儲(chǔ)的是一系列數(shù)字中的最大值,那么變量的名稱(chēng)應(yīng)當(dāng)以max為前綴,例如maxScore。如果是最小值,則是以min為前綴,例如minScore;
  • 如果變量中存儲(chǔ)的是一系列數(shù)字的和,那么變量的名稱(chēng)應(yīng)當(dāng)以total為前綴,例如totalIncome;
  • 如果變量中存儲(chǔ)的是數(shù)組的長(zhǎng)度,那么變量的名稱(chēng)可以用numberOf為前綴,例如numberOfUsers。

字符串變量的命名規(guī)則

  • 如果表達(dá)的是人名、品牌名、公司名、數(shù)據(jù)庫(kù)中的表名,那么變量的名稱(chēng)可以用單詞name結(jié)尾,例如customerName、brandName、companyName;
  • 如果表達(dá)的是按鍵或按鈕上刻著的文字、紙質(zhì)表格或電子表單上輸入框左側(cè)的簡(jiǎn)短說(shuō)明,那么變量的名稱(chēng)可以用單詞label結(jié)尾,例如buttonLabel;
  • 不允許使用單詞content

函數(shù)名

  • 函數(shù)的名稱(chēng)應(yīng)當(dāng)由動(dòng)詞和名詞組成,例如readFile、writeFile;
  • 如果函數(shù)的功能是將參數(shù)轉(zhuǎn)換為另一種形式的輸出(比如進(jìn)制轉(zhuǎn)換、幣種轉(zhuǎn)換),那么函數(shù)的名稱(chēng)應(yīng)當(dāng)以單詞to為前綴,例如toDollar、toHexadecimal;
  • 如果函數(shù)的功能是檢驗(yàn)參數(shù)并返回一個(gè)布爾值,那么函數(shù)的名稱(chēng)應(yīng)當(dāng)以單詞check為前綴,例如checkIsDirectory、checkIsExecutable;
  • 如果函數(shù)的功能是“計(jì)數(shù)”,那么函數(shù)的名稱(chēng)應(yīng)當(dāng)以單詞count為前綴,并且其中被計(jì)數(shù)的對(duì)象應(yīng)當(dāng)為復(fù)數(shù)形式,例如countPaidOrders。

構(gòu)造型函數(shù)的命名規(guī)則

  • 如果表達(dá)的是從無(wú)到有地創(chuàng)造一個(gè)對(duì)象,那么函數(shù)名可以用create作為前綴,例如createObject;
  • 如果表達(dá)的是將一些輸入原封不動(dòng)地放在一起(可能輸入之間添加了其它東西)創(chuàng)造出一個(gè)對(duì)象,那么函數(shù)名可以用make作為前綴,例如makeFloor。進(jìn)一步地,如果函數(shù)不改變輸入的相對(duì)順序,那么函數(shù)名可以用concat,例如concatString;
  • 如果函數(shù)會(huì)將根據(jù)輸入創(chuàng)造出具有不止一個(gè)層級(jí)的對(duì)象,那么函數(shù)名可以用build作為前綴,例如buildBinarySearchTree。

修改型函數(shù)的命名規(guī)則

  • 如果函數(shù)負(fù)責(zé)更新數(shù)據(jù)庫(kù)中的記錄,那么函數(shù)名應(yīng)當(dāng)以單詞update為前綴;
  • 如果函數(shù)修改的是一些可枚舉的狀態(tài),那么函數(shù)名應(yīng)當(dāng)以單詞change為前綴。

類(lèi)名

  • 類(lèi)的名稱(chēng)應(yīng)當(dāng)采用capital case的命名風(fēng)格,例如DatabaseConnection;
  • 類(lèi)的名稱(chēng)應(yīng)當(dāng)以一個(gè)名詞結(jié)尾;
  • 如果類(lèi)的存在是為了使用某種設(shè)計(jì)模式,那么類(lèi)名應(yīng)當(dāng)可以反映在設(shè)計(jì)模式中所處的位置,例如在State模式中,代表具體狀態(tài)的類(lèi)的名稱(chēng)可以是InitialState、UnpaidState。

參考資料

The art of naming variables
Google JavaScript Style Guide
Letter case

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 我用的一些Node.js開(kāi)發(fā)工具、開(kāi)發(fā)包、框架等總結(jié)

    我用的一些Node.js開(kāi)發(fā)工具、開(kāi)發(fā)包、框架等總結(jié)

    這篇文章主要介紹了我個(gè)人使用的一些Node.js開(kāi)發(fā)工具、開(kāi)發(fā)包、框架等總結(jié),需要的朋友可以參考下
    2014-09-09
  • node模塊機(jī)制與異步處理詳解

    node模塊機(jī)制與異步處理詳解

    這篇文章主要介紹了node模塊機(jī)制與異步處理詳解的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • node.js模擬實(shí)現(xiàn)自動(dòng)發(fā)送郵件驗(yàn)證碼

    node.js模擬實(shí)現(xiàn)自動(dòng)發(fā)送郵件驗(yàn)證碼

    這篇文章主要為大家介紹了node.js模擬實(shí)現(xiàn)自動(dòng)發(fā)送郵件驗(yàn)證碼的實(shí)例過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • Node.js中Swagger的使用指南詳解

    Node.js中Swagger的使用指南詳解

    Swagger(目前用OpenAPI?Specification代替)是一個(gè)用于設(shè)計(jì)、構(gòu)建、記錄和使用REST?API的強(qiáng)大工具,本文將探討使用Swagger的一些關(guān)鍵技巧,需要的可以參考一下
    2024-01-01
  • node.js中的console.error方法使用說(shuō)明

    node.js中的console.error方法使用說(shuō)明

    這篇文章主要介紹了node.js中的console.error方法使用說(shuō)明,本文介紹了console.error的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • Nodejs 發(fā)送Post請(qǐng)求功能(發(fā)短信驗(yàn)證碼例子)

    Nodejs 發(fā)送Post請(qǐng)求功能(發(fā)短信驗(yàn)證碼例子)

    這篇文章主要介紹了Nodejs 發(fā)送Post請(qǐng)求功能(發(fā)短信驗(yàn)證碼例子),需要的朋友可以參考下
    2017-02-02
  • node下使用UglifyJS壓縮合并JS文件的方法

    node下使用UglifyJS壓縮合并JS文件的方法

    下面小編就為大家分享一篇node下使用UglifyJS壓縮合并JS文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Node.js測(cè)試中的Mock文件系統(tǒng)詳解

    Node.js測(cè)試中的Mock文件系統(tǒng)詳解

    相信大家應(yīng)該都知道在Node.js測(cè)試中,常常會(huì)需要構(gòu)造某種項(xiàng)目目錄。 為每個(gè)測(cè)試用例添加相應(yīng)的目錄結(jié)構(gòu)既費(fèi)時(shí)又難以維護(hù)。那么這個(gè)時(shí)候Mock文件系統(tǒng)就派上用場(chǎng)了,下面這篇文章詳細(xì)的介紹了Mock文件系統(tǒng),有需要的朋友們可以參考借鑒,下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11
  • Node.js 深度調(diào)試方法解析

    Node.js 深度調(diào)試方法解析

    這篇文章主要介紹了Node.js 深度調(diào)試方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • node搭建后臺(tái)的實(shí)現(xiàn)步驟

    node搭建后臺(tái)的實(shí)現(xiàn)步驟

    本文介紹了使用Node.js搭建后臺(tái)的實(shí)現(xiàn)步驟,文章詳細(xì)闡述了每個(gè)步驟的實(shí)現(xiàn)過(guò)程,并給出了示例代碼,對(duì)于想要了解如何使用Node.js搭建后臺(tái)的讀者具有一定的參考價(jià)值
    2023-08-08

最新評(píng)論