1. 程式人生 > >一個巧合,我把文件寫進了程式碼裡

一個巧合,我把文件寫進了程式碼裡

最近因為公司業務的調整,專案需要開發大量的業務元件、高複用邏輯提供給客戶使用。當各類元件、程式碼多了以後,加上團隊內幾個成員書寫習慣、開發思想的不同,出現了好多問題。尤其兩個問題最嚴重: 1. 大量的業務元件/業務邏輯需要通過查原始碼的方式,或者問寫元件的人,才能知道元件是否有自己需要的屬性/鉤子方法 2. 有些元件因為產品需求 + 口頭溝通 + 需求妥協,只能應用於某一個特定的情況下,其他人看設計圖或者邏輯差不多相似就直接拿過來用,結果發現用不了/各種問題 為了解決這兩個問題,就開始要求組員在開發業務元件的同時,必須寫對應的開發文件/程式碼註釋。一開始還好,中後期開發文件的更新明顯跟不上元件的迭代,逐漸地又回到了靠嘴問的情況,第2個問題也是隨著時間推移又回到了起點。 某天通過`VS Code`除錯程式碼的時候忽然發現,用滑鼠在原生語法和`react`的方法上懸浮幾秒鐘,就會出現一個提示框,裡面有一些節點/元件/方法的簡單介紹,引數等。 對,這就是我想要的效果! 原生語法 (如`document.getElementById`): ![document.getElementById](https://img2020.cnblogs.com/blog/2113379/202102/2113379-20210221184954264-838929689.png) `react`的方法(如`useState`): ![useState](https://img2020.cnblogs.com/blog/2113379/202102/2113379-20210221185021534-1266450696.png) 通過`ctrl + 滑鼠左鍵`點開型別定義,發現提示框裡的內容其實是相關程式碼上方的註釋。 ![型別定義](https://img2020.cnblogs.com/blog/2113379/202102/2113379-20210221185047997-1940071024.png) 按照型別定義裡面的註釋,我在程式碼裡輸入`/**`的時候出現瞭如下圖的提示。 ![JSDOC提示](https://img2020.cnblogs.com/blog/2113379/202102/2113379-20210221185106340-1176366617.png) 拿著關鍵詞我去`VS Code`的官網搜尋了一番,在官網搜到了答案([點選此處](https://code.visualstudio.com/Docs/languages/javascript#_jsdoc-support))。 > VS Code understands many standard [JSDoc](https://jsdoc.app/) annotations, and uses these annotations to provide rich [IntelliSense](https://code.visualstudio.com/Docs/languages/javascript#_intellisense). > > VS Code 可以理解標準的JSDoc程式碼註釋,並使用這些註釋提供豐富的智慧感知(如智慧程式碼完成,懸停資訊和簽名信息) 而`JSDoc`的語法也非常簡單,只需要保證註釋的開頭是`/**`即可,其他與多行註釋沒有什麼差別。(更多語法:[點選此處](https://jsdoc.app/)) ```javascript /** 這樣便建立了一個程式碼提醒 */ function remind() {} ``` 上手寫個元件試試效果! ```javascript import React, { useEffect, useState } from 'react' interface KeywordInterface { /** * 關鍵詞 */ keyword?: string; /** * 高亮顯示的顏色,支援hex、hsl、rgba、keywords */ color?: string; children?: string; } /** * 關鍵詞高亮元件 * * @example * * @param { string } keyword - 關鍵詞 * @param { string } color - 高亮顯示的顏色 */ const LightKeyword: