<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何優(yōu)雅的使用注釋? ????

          共 7000字,需瀏覽 14分鐘

           ·

          2021-10-28 18:10

          點(diǎn)擊上方 前端瓶子君,關(guān)注公眾號(hào)

          回復(fù)算法,加入前端編程面試算法每日一題群


          前言

          注釋相信小伙伴們都不陌生,但是就是這個(gè)小小的注釋就像項(xiàng)目文檔一樣讓許多小伙伴又愛(ài)又恨。不喜歡寫注釋,又討厭別人不寫注釋。在此我們將討論 JavaScriptCSS 的注釋,希望通過(guò)這篇文章,讓你重拾對(duì)注釋的喜愛(ài),讓編碼的樂(lè)趣如星辰大海。

          一、語(yǔ)法

          1.1 CSS 注釋

          /* css 注釋 */
          復(fù)制代碼

          1.2 JavaScript 注釋

          // 單行注釋

          /**
           * 多行注釋,注意第一行最好用兩個(gè) *
           * ...
           */

           
          /*
           當(dāng)然,除了兩端的 * 必須加以外,其他的 * 不加也行
           ...
          */

          復(fù)制代碼

          二、基本使用

          2.1 單行注釋

          一般情況下,單行注釋會(huì)出現(xiàn)在代碼的正上方,起到提示的作用:

          /* 用注釋備注 CSS 類名的功能 */

          /* 頂部組件 */
          .hd {
            position: fixed;
            width100vw;
          }

          /* 版心 */
          .container {
            margin16px auto;
            width1200px;
          }
          復(fù)制代碼
          // 用單行注釋備注簡(jiǎn)單的信息

          const userName = ""// 用戶名
          const userAvatar = ""// 用戶頭像

          // xxx函數(shù)
          const myFunction = () => {};
          復(fù)制代碼

          2.2 多行注釋

          多行注釋一般用于需要備注的信息過(guò)多的情況,常常出沒(méi)于 JavaScript 函數(shù)的附近。首先提出一個(gè)問(wèn)題:為什么要用到多行注釋,用單行注釋不香嗎?下面就來(lái)看看下面的代碼:

          // xxx函數(shù)
          const myFunction = ({ id, name, avatar, list, type }) => {
            // 此處省略 30 行代碼
          };
          復(fù)制代碼

          小伙伴們可能看到了,一個(gè)傳入五個(gè)參數(shù),內(nèi)部數(shù)行代碼的函數(shù)竟然只有短短的一行注釋,也許你開(kāi)發(fā)的時(shí)候能記住這個(gè)函數(shù)的用途以及參數(shù)的類型以及是否必傳等,但是如果你隔了一段時(shí)間再回頭看之前的代碼,那么簡(jiǎn)短的注釋就可能變成你的困擾。更不用說(shuō)沒(méi)有注釋,不寫注釋一時(shí)爽,回看代碼火葬場(chǎng)。 寫注釋的目的在于提高代碼的可讀性。相比之下,下面的注釋就清晰的多:

          /**
           * 調(diào)整滾動(dòng)距離
           * 用于顯示給定 id 元素
           * @param    id        string  必傳    元素 id
           * @param    distance  number  非必傳  距離視口最頂部距離(避免被頂部固定定位元素遮擋)
           * @returns  null
           */

          export const scrollToShowElement = (id = "", distance = 0) => {
            return () => {
              if (!id) {
                return;
              };

              const element = document.getElementById(id);
              if (!element) {
                return;
              };

              const top = element?.offsetTop || 0;
              window.scroll(0, top - distance);
            };
          };
          復(fù)制代碼

          對(duì)于復(fù)雜的函數(shù),函數(shù)聲明上面要加上統(tǒng)一格式的多行注釋,同時(shí)內(nèi)部的復(fù)雜邏輯和重要變量也需要加上單行注釋,兩者相互配合,相輔相成。函數(shù)聲明的多行注釋格式一般為:

          /**
           * 函數(shù)名稱
           * 函數(shù)簡(jiǎn)介
           * @param    參數(shù)1    參數(shù)1數(shù)據(jù)類型  是否必傳  參數(shù)1描述
           * @param    參數(shù)2    參數(shù)2數(shù)據(jù)類型  是否必傳  參數(shù)2描述
           * @param    ...
           * @returns  返回值
           */

          復(fù)制代碼

          多行注釋的優(yōu)點(diǎn)是清晰明了,缺點(diǎn)是較為繁瑣(可以借助編輯器生成 JavaScript 函數(shù)注釋模板)。建議邏輯簡(jiǎn)單的函數(shù)使用單行注釋,邏輯復(fù)雜的函數(shù)和公共/工具函數(shù)使用多行注釋。

          當(dāng)然,一個(gè)好的變量/函數(shù)名也能降低閱讀者的思考成本,可以移步到我的文章:《優(yōu)雅的命名 ????》[2]。

          三、進(jìn)階使用

          無(wú)論是 css 還是 JavaScript 中,當(dāng)代碼越來(lái)越多的時(shí)候,也使得尋找要改動(dòng)的代碼時(shí)變得越來(lái)越麻煩。所以我們有必要對(duì)代碼按模塊進(jìn)行整理,并在每個(gè)模塊的頂部用注釋,結(jié)束時(shí)使用空行進(jìn)行分割。

           /* 以下代碼僅為示例 */

           /* 模塊1 */
           /* 類名1 */
           .class-a {}

           /* 類名2 */
           .class-b {}

           /* 類名3 */
           .class-c {}

           /* 模塊2 */
           /* 類名4 */
           .class-d {}

           /* 類名5 */
           .class-e {}

           /* ... */
          復(fù)制代碼
          // 以下代碼僅為示例

          // 模塊1
          // 變量1
          const value1 = "";
          // 變量2
          const value2 = "";
          // 變量3
          const value3 = "";
          // 函數(shù)1
          const myFunction1 = () => {};

          // 模塊2
          // 變量4
          const value4 = "";
          // 變量5
          const value5 = "";
          // 變量6
          const value6 = "";
          // 函數(shù)2
          const myFunction2 = () => {};

          // ...
          復(fù)制代碼

          效果有了,但是似乎不太明顯,因此我們?cè)谧⑨屩性黾?- 或者 = 來(lái)進(jìn)行分割試試:

           /* ------------------------ 模塊1 ------------------------ */
           /* 類名1 */
           .class-a {}

           /* 類名2 */
           .class-b {}

           /* 類名3 */
           .class-c {}

           /* ------------------------ 模塊2 ------------------------ */
           /* 類名4 */
           .class-d {}

           /* 類名5 */
           .class-e {}

           /* ... */
          復(fù)制代碼
          // 以下代碼僅為示例

          /* ======================== 模塊1 ======================== */
          // 變量1
          const value1 = "";
          // 變量2
          const value2 = "";
          // 變量3
          const value3 = "";
          // 函數(shù)1
          const myFunction1 = () => {};

          /* ======================== 模塊2 ======================== */
          // 變量4
          const value4 = "";
          // 變量5
          const value5 = "";
          // 變量6
          const value6 = "";
          // 函數(shù)2
          const myFunction2 = () => {};

          // ...
          復(fù)制代碼

          能直觀的看出,加長(zhǎng)版的注釋分割效果更好,區(qū)分度更高。高質(zhì)量的代碼往往需要最樸實(shí)無(wú)華的注釋進(jìn)行分割。其中 JavaScript 的注釋“分割線”建議使用多行注釋。


          “華麗的”分割線:

           /* ------------------------ 華麗的分割線 ------------------------ */
           
          /* ======================== 華麗的分割線 ======================== */
          復(fù)制代碼

          四、擴(kuò)展

          工欲善其事,必先利其器。下面我要推薦幾款 VSCode 編輯器關(guān)于注釋的插件。

          4.1 Better Comments

          Better Comments.png

          插件介紹:可以改變注釋的顏色,有四種高亮的顏色(默認(rèn)為紅色、橙色、綠色、藍(lán)色)和一種帶刪除線的黑色。顏色可以在插件配置里面修改。下圖為實(shí)例顏色和本人在項(xiàng)目中的用法,一個(gè)注釋對(duì)應(yīng)一種情況。

          注釋的默認(rèn)顏色.png

          喜歡花里胡哨的coder們必備插件,有效提高注釋的辨析度和美感,從此愛(ài)上注釋。其改變注釋顏色只需要加上一個(gè)或多個(gè)字符即可,開(kāi)箱即用。

          // ! 紅色的高亮注釋,雙斜線后加英文嘆號(hào)     !     配置
          // todo 橙色的高亮注釋,雙斜線后加         todo   函數(shù)
          // * 綠色的高亮注釋,雙斜線后加            *      變量
          // ? 藍(lán)色的高亮注釋,雙斜線后加英文問(wèn)號(hào)     ?     組件
          // // 黑色帶刪除線的注釋,雙斜線后加雙斜線  //    說(shuō)明
          復(fù)制代碼

          4.2 koroFileHeader

          koroFileHeader.png

          插件介紹:文件頭部添加注釋,在光標(biāo)處添加函數(shù)注釋,一鍵添加佛祖保佑永無(wú)BUG、神獸護(hù)體等注釋圖案。

          koroFileHeader 說(shuō)明.png

          4.3 JavaScript Comment Snippet

          JavaScript Comment Snippet.png

          插件介紹:可以快速生成 JavaScript 注釋,冷門但是好用。

          結(jié)語(yǔ)

          不得不說(shuō)注釋在編碼過(guò)程中真的相當(dāng)重要,為了寫出更優(yōu)雅,更易于維護(hù)的代碼,我們也應(yīng)當(dāng)把最重要的信息寫到注釋里。一個(gè)項(xiàng)目的 README.markdown 和項(xiàng)目中的注釋就喜像是項(xiàng)目的 說(shuō)明書 一樣,能讓非項(xiàng)目開(kāi)發(fā)者更快的讀懂代碼的含義以及編碼的思想。讓代碼成就我們,讓代碼改變世界,讓注釋,伴我同行!



          關(guān)于本文

          來(lái)源:冰冰你個(gè)小可愛(ài)

          https://juejin.cn/post/7018527180015534110


          最后

          歡迎關(guān)注【前端瓶子君】??ヽ(°▽°)ノ?
          回復(fù)「算法」,加入前端編程源碼算法群,每日一道面試題(工作日),第二天瓶子君都會(huì)很認(rèn)真的解答喲!
          回復(fù)「交流」,吹吹水、聊聊技術(shù)、吐吐槽!
          回復(fù)「閱讀」,每日刷刷高質(zhì)量好文!
          如果這篇文章對(duì)你有幫助,在看」是最大的支持
           》》面試官也在看的算法資料《《
          “在看和轉(zhuǎn)發(fā)”就是最大的支持


          瀏覽 35
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  操一操逼一逼 | 午夜综合网 | 日本三级网站在线播放 | 好吊一区二区三区 | 国产乱淫AV片免费 |