日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

编写高质量可维护的代码:优雅命名

發布時間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编写高质量可维护的代码:优雅命名 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好,我是若川。今天分享一篇關于如何命名更優雅的文章。

點擊下方卡片關注我、加個星標,或者查看源碼等系列文章。學習源碼整體架構系列、年度總結、JS基礎系列

本文首發于政采云前端團隊博客:編寫高質量可維護的代碼:優雅命名

https://www.zoo.team/article/good-name

前言

俗話說得好,萬事開頭難。而對于前端 coder 來說,每次新項目、新需求來的時候,我想大家最苦惱的往往就是如何去命名,無論是項目名稱、頁面的文件名稱亦或是代碼中的方法名稱,對于我來說,但凡名字想好了以后,我覺得需求就已經寫完一半了。

如何才能更好,更優雅的去解決這些命名問題呢?在這之前,先隨我看一些不合適的命名示例吧。

不合適的命名

我們先來看一些例子:

  • 無意義的,抽象的,任何地方可以使用,誰都不知道你這里用的命名來源是誰

//?bad const?data; const?info; const?tool;
  • 簡稱,單詞的簡稱或者縮寫很容易讓人無法確定具體指代什么

//?bad const?comp; const?crt_date;//?good const?components; const?company; const?current_date;
  • 數字或者字母結尾的命名,讓其他人無法獲取這些之間的區別

//?bad const?button1; const?button2; const?info1;//?good const?importButton; const?userInfo;
  • 全局的地方不要用前置或后置下劃線,前置下劃線通常代表了私有變量

//?bad const?_firstName_?=?'Zcy'; const?firstName_?=?'Zcy'; const?_firstName?=?'Zcy';//?good const?firstName?=?'Zcy'

命名規則

如何讓命名更簡單呢,只要遵循一些規則規范,總能將復雜的事情拆分開來,變成一件簡單的事情。

直白、有意義

想要讓你的命名簡單易懂,最簡單的方式就是直白并且有意義,直接了當的在命名中體現出你這個命名的功能,或者描述,舉個例子:

//?bad function?getInfo(){}; function?formatList(){}; const?data?=?[];//?good function?getUserInfo(){}; function?formatNewsList(){}; const?articleData?=?[];

如果在頁面中定義了上面這樣的變量,哪種寫法可以讓你在沒有注釋的情況下,就能快速了解原作者的書寫意圖呢?(當然,代碼中還是需要一些必要注釋的)。

所以在命名的時候,需要的就是直白、完備、有意義,讓別人通過命名就能了解到這個名稱(無論是變量、方法或者是樣式名)背后的的含義,這樣的命名就是高效的、易懂的。

遵從慣例、標準

習慣使用業界習慣的命名標識,或者是約定俗成的書寫習慣。

  • 用 id 當做數據標識命名,而不是 identifier

  • 例如布爾值命名類型,通常只有兩個值類型:真,假,根據不同的使用場景,也可以有一些常用的命名方式

//?可見、狀態等,可用?is+動詞/形容詞的方式 const?isVisible; const?isLoading;//?配置,選項等類型,可以用?withXxx、hasXxx?來標識是否有某個屬性等,enableXxx?來表示是否開啟配置 const?withTab; const?hasPlan; const?enableFilter;
  • 例如方法命名,也可以使用動詞 + 名次類的組合命名方式,操作類方法 fetchXxx,getXxx,當需要根據某些屬性獲取數據時可用 ,getXxxByYxx 這類的命名,刪除類方法 deleteXxx,格式化數據 formatXxx

//?數據獲取方法 function?getUserInfo(){}; function?fetchSearchList(){};//?需要根據一些屬性去獲取數據 function?getGoodsById(){}; function?queryUserByName(){};//?刪除數據 function?deleteUser(){}; function?removeGoodsItem(){};//?格式化數據 function?formatDate(){}; function?sortByDesc(){}

規范約束

團隊如果用統一的命名規范,那就一定要遵守,例如文件名的命名是大寫字母開頭的駝峰寫法,那你的命名就不能再修改為其他方式,在規范創建之初或者修訂時可以提出修改意見并進行討論,但如果已經確立的,就不要再。去自由的破壞規范。

當然也可以使用一些輔助手段幫助約束代碼中的命名校驗,例如在 Eslint 配置中加入 id-match 或者 camelcase,前者可以直接通過正則配置自己需要的命名規范,后者則是直接采用了駝峰命名的規范約束。

這里也舉例介紹一下在 VsCode 中 Eslint 的使用

  • 首選電腦全局安裝 eslint

npm?install?eslint?-g
  • VsCode ?中安裝 ESlint 插件并且啟用

  • 在自己項目中,執行 eslint --init 命令來創建項目的 .eslintrc.js 文件,之后可以在 .eslintrc.js 文件中的 rules 規則添加上規范的約束條件來使用這個規則

module.exports?=?{"rules":?{"id-match":?["error",?"^[a-z]+([A-Z][a-z]+)*$"],"camelcase":?["error",?{"properties":?"always"}]} }
  • 項目中如果碰到不符合規范的就會直接報錯提示

命名規范推薦

上面簡單介紹了一些命名的規則,那么具體到實際操作中,我們又有哪些較好的命名規范可以選擇呢?下面根據不同的使用場景,也簡單給大家介紹一些經常推薦使用的命名規范。

項目名稱、文件名稱

項目或者單文件的命名方面,常見規則:

  • kebab-case:橫短線命名,也叫串式命名法,小寫字母的詞組,中間加 - 拼接的方式,這種方式命名便于同類內容快速查找

  • //?good news-index; news-list; news-detail;
  • camelcase:小駝峰命名,第一個單字以小寫字母開始,第二個單字的首字母大寫

  • //?good newsIndex; newsList; newsDetail;

    JavaScript

    • 變量:常用小駝峰命名

    //?good const?userInfo; const?userAddressList; const?currentDate;
    • 全部使用大寫字母,單詞之間采用 _ 分割

    //?good? const?ITEM_LIST; const?PAGE_ITEM_LIST; const?DEFAULT_CONFIG;
    • 方法:小駝峰命名,并且推薦命名時添加一些動詞類,可以幫助快速理解方法含義,例如以 handle 開頭,中間 xxx 表示操作內容,show 表示具體操作, handlexxxxChange,handlexxxxShow,而比如數據獲取可以用 get,fetch 這類

    //?小駝峰命名 function?getUserInfo(){}; function?addSuplierInfo(){};//?添加一些操作類的輔助命名 function?handleUserInfoChange(){}; function?handleTitleClick(){}; function?fetchPageData(){};
    • 類名:大駝峰命名

    export?class?CommonLogo; export?class?CartCenter;

    css

    BEM 規范

    BEM 是一種命名 CSS 樣式的命名方法和規范,全稱 Block(塊)、 Element(元素)、Modifier(修飾符) ,想必很多人都比較熟悉了。

    Block:一般可以看做是獨立具有實際意義的模塊部分,例如 header,container,menu 等 Element:組成 Block 的一部分,沒有具體的實際意義,一般也不獨立使用,例如 menu item,list item,header title 等 Modifier:一般是塊或者元素的修飾狀態或者行為,例如 disabled,color,checked 等

    而 BEM 的寫法一般是 .block-name__element-name--modifier-name,其中 Block 與 Element 之間連接是通過 __ 雙下劃線,Block,Element 與 Modifier 之間是通過 -- 雙中劃線進行連接,當使用less或者 sass 語法編寫 css 時,通過嵌套語法也能夠很簡潔的書寫這部分樣式。

    <div?class="head"><div?class="head__title">標題<div?class="head__title--disabled">置灰內容</div></div> </div> .head?{background-color:?#fff;&__title?{font-size:?14px;color:?#666;&--disabled:?{color:?#f00;?}} }

    BEM 命名規范可以讓樣式的命名更加模塊化,組件之間結構獨立,減少了命名之間的沖突,有著不錯的易讀性、維護性等等,但可能會讓項目中的樣式命特別的長。

    下面也有一些使用 BEM 命名規范的網站,有興趣的可以去看看:

    • https://csswizardry.com/

    • https://mediatemple.net/

    • https://www.udemy.com/

    常用 CSS 樣式名稱

    這里引用一下掘金作者 冷石Boy 的 css 樣式名稱

    包裹類: container, wrapper, outer, inner, box, header, footer, main, content, aside, page, p, block

    狀態類: primary, secondary, success, danger, warning, info, error, Link, light, dark, disabled, active, checked, loading

    尺寸類: large, middle, small, bigger, smaller

    組件類: card, list, picture, carousel, swiper, menu, navs, badge, hint, modal, dialog

    位置類: first, last, current, prev, next, forward, back

    文本類: title, desc, content, date, author, category,label,tag

    人物類: avatar, name, age, post, intro

    取名推薦工具

    當然對于命名有困難選擇癥的朋友來說,可以推薦你們一個意想不到的網站 —— Codelf (https://unbug.github.io/codelf),一個幫你搜索 Github、GitLab 等網站中,你想查找的內容的不同命名。

    并且這個網站支持 JavaScript、CSS、HTML、Java 等多種語言的搜索,可以方便的過濾不需要的搜索類型。

    Hover 搜索詞后的操作,Search 會再以當前選詞進行一次搜索,Repo 可以跳轉這個詞語的出處項目,Copy 當然就不說了,有興趣的朋友都可以嘗試一下。

    總結

    命名其實并不麻煩,遵循一些定好的規則規范,或者自己給自己定義好這個規范,然后進行直白、有意義的命名,那么之后的命名就只會成為你的一種習慣,而不再是困擾你的難題,也希望大家可以分享一些自己的命名規范或者技巧,共同討論下吧。

    參考文獻

    • 故宮命名法:https://juejin.cn/post/6844903913892610061

    • 如何代碼命名:https://www.cyningsun.com/07-04-2020/how-to-naming-things.html

    最近組建了一個江西人的前端交流群,如果你也是江西人可以加我微信 ruochuan12 拉你進群。


    ·················?若川出品?·················

    今日話題

    略。歡迎在下方留言~? 歡迎分享、收藏、點贊、在看我的公眾號文章~

    一個愿景是幫助5年內前端人走向前列的公眾號

    可加我個人微信?ruochuan12,長期交流學習

    推薦閱讀

    我在阿里招前端,我該怎么幫你?(現在還能加我進模擬面試群)

    若川知乎問答:2年前端經驗,做的項目沒什么技術含量,怎么辦?

    點擊方卡片關注我、加個星標,或者查看源碼等系列文章。
    學習源碼整體架構系列、年度總結、JS基礎系列

    總結

    以上是生活随笔為你收集整理的编写高质量可维护的代码:优雅命名的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。