優雅使用注釋

      網友投稿 841 2022-05-30

      前言

      注釋相信小伙伴們都不陌生,但是就是這個小小的注釋就像項目文檔一樣讓許多小伙伴又愛又恨。不喜歡寫注釋,又討厭別人不寫注釋。在此我們將討論 JavaScript 和 CSS 的注釋,希望通過這篇文章,讓你重拾對注釋的喜愛,讓編碼的樂趣如星辰大海。

      一、語法

      1. CSS 注釋

      /* css 注釋 */

      2. JavaScript 注釋

      // 單行注釋 /** * 多行注釋,注意第一行最好用兩個 * * ... */ /* 當然,除了兩端的 * 必須加以外,其他的 * 不加也行 ... */

      二、基本使用

      1. 單行注釋

      一般情況下,單行注釋會出現在代碼的正上方,起到提示的作用:

      /* 用注釋備注 CSS 類名的功能 */ /* 頂部組件 */ .hd { position: fixed; width: 100vw; } /* 版心 */ .container { margin: 16px auto; width: 1200px; }

      // 用單行注釋備注簡單的信息 const userName = ""; // 用戶名 const userAvatar = ""; // 用戶頭像 // xxx函數 const myFunction = () => {};

      2. 多行注釋

      多行注釋一般用于需要備注的信息過多的情況,常常出沒于 JavaScript 函數的附近。首先提出一個問題:為什么要用到多行注釋,用單行注釋不香嗎?下面就來看看下面的代碼:

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

      小伙伴們可能看到了,一個傳入五個參數,內部數行代碼的函數竟然只有短短的一行注釋,也許你開發的時候能記住這個函數的用途以及參數的類型以及是否必傳等,但是如果你隔了一段時間再回頭看之前的代碼,那么簡短的注釋就可能變成你的困擾。

      更不用說沒有注釋,不寫注釋一時爽,回看代碼火葬場。

      寫注釋的目的在于提高代碼的可讀性。相比之下,下面的注釋就清晰的多:

      /** * 調整滾動距離 * 用于顯示給定 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); }; };

      對于復雜的函數,函數聲明上面要加上統一格式的多行注釋,同時內部的復雜邏輯和重要變量也需要加上單行注釋,兩者相互配合,相輔相成。函數聲明的多行注釋格式一般為:

      /** * 函數名稱 * 函數簡介 * @param 參數1 參數1數據類型 是否必傳 參數1描述 * @param 參數2 參數2數據類型 是否必傳 參數2描述 * @param ... * @returns 返回值 */

      優雅的使用注釋

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

      當然,一個好的變量/函數名也能降低閱讀者的思考成本,可以移步到我的文章:《優雅的命名》。

      三、進階使用

      無論是 css 還是 JavaScript 中,當代碼越來越多的時候,也使得尋找要改動的代碼時變得越來越麻煩。所以我們有必要對代碼按模塊進行整理,并在每個模塊的頂部用注釋,結束時使用空行進行分割。

      /* 以下代碼僅為示例 */ /* 模塊1 */ /* 類名1 */ .class-a {} /* 類名2 */ .class-b {} /* 類名3 */ .class-c {} /* 模塊2 */ /* 類名4 */ .class-d {} /* 類名5 */ .class-e {} /* ... */

      // 以下代碼僅為示例 // 模塊1 // 變量1 const value1 = ""; // 變量2 const value2 = ""; // 變量3 const value3 = ""; // 函數1 const myFunction1 = () => {}; // 模塊2 // 變量4 const value4 = ""; // 變量5 const value5 = ""; // 變量6 const value6 = ""; // 函數2 const myFunction2 = () => {}; // ...

      效果有了,但是似乎不太明顯,因此我們在注釋中增加 - 或者 = 來進行分割試試:

      /* ------------------------ 模塊1 ------------------------ */ /* 類名1 */ .class-a {} /* 類名2 */ .class-b {} /* 類名3 */ .class-c {} /* ------------------------ 模塊2 ------------------------ */ /* 類名4 */ .class-d {} /* 類名5 */ .class-e {} /* ... */

      // 以下代碼僅為示例 /* ======================== 模塊1 ======================== */ // 變量1 const value1 = ""; // 變量2 const value2 = ""; // 變量3 const value3 = ""; // 函數1 const myFunction1 = () => {}; /* ======================== 模塊2 ======================== */ // 變量4 const value4 = ""; // 變量5 const value5 = ""; // 變量6 const value6 = ""; // 函數2 const myFunction2 = () => {}; // ...

      能直觀的看出,加長版的注釋分割效果更好,區分度更高。高質量的代碼往往需要最樸實無華的注釋進行分割。其中 JavaScript 的注釋“分割線”建議使用多行注釋。

      “華麗的”分割線:

      /* ------------------------ 華麗的分割線 ------------------------ */ /* ======================== 華麗的分割線 ======================== */

      四、擴展

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

      1. Better Comments

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

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

      // ! 紅色的高亮注釋,雙斜線后加英文嘆號 ! 配置 // todo 橙色的高亮注釋,雙斜線后加 todo 函數 // * 綠色的高亮注釋,雙斜線后加 * 變量 // ? 藍色的高亮注釋,雙斜線后加英文問號 ? 組件 // // 黑色帶刪除線的注釋,雙斜線后加雙斜線 // 說明

      2. koroFileHeader

      插件介紹:文件頭部添加注釋,在光標處添加函數注釋,一鍵添加佛祖保佑永無BUG、神獸護體等注釋圖案。

      3. JavaScript Comment Snippet

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

      小結

      不得不說注釋在編碼過程中真的相當重要,為了寫出更優雅,更易于維護的代碼,我們也應當把最重要的信息寫到注釋里。一個項目的 README.markdown 和項目中的注釋就喜像是項目的 說明書 一樣,能讓非項目開發者更快的讀懂代碼的含義以及編碼的思想。讓代碼成就我們,讓代碼改變世界,讓注釋,伴我同行!

      CSS JavaScript web前端

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:使用 Gitee 進行代碼管理(包括本地倉庫如何同時關聯Git和Gitee)
      下一篇:【論文代碼】GraphSAGE(更新ing)
      相關文章
      亚洲综合在线另类色区奇米| 在线亚洲精品自拍| 亚洲国产综合91精品麻豆| 亚洲精品无码专区在线在线播放 | 亚洲综合久久成人69| 久久精品国产亚洲av高清漫画| 亚洲国产第一站精品蜜芽| 亚洲人成网站在线播放vr| 亚洲精品无码午夜福利中文字幕| 亚洲午夜久久久久久久久久| 国产亚洲精午夜久久久久久| 在线观看亚洲av每日更新| 亚洲一区二区三区香蕉| 亚洲精品狼友在线播放| 亚洲AV无码专区在线播放中文| 亚洲国产精品无码久久一区二区| 亚洲av无码专区国产乱码在线观看| 亚洲AV无码专区国产乱码4SE| 日韩亚洲AV无码一区二区不卡| 久久亚洲精品中文字幕| 亚洲精品中文字幕麻豆| 亚洲av成人综合网| 亚洲欧洲av综合色无码| 国产成人高清亚洲一区久久 | 亚洲av无码一区二区三区天堂| 无码色偷偷亚洲国内自拍| 亚洲第一黄色网址| 国产亚洲情侣一区二区无码AV| 亚洲精品午夜国产VA久久成人| 亚洲成年人在线观看| 亚洲成无码人在线观看| 亚洲日本久久一区二区va| 亚洲日韩精品无码AV海量| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 亚洲gv白嫩小受在线观看| 亚洲男人都懂得羞羞网站| 亚洲理论片在线观看| 亚洲看片无码在线视频| 国产91成人精品亚洲精品| 亚洲午夜福利在线观看| 亚洲欧洲第一a在线观看|