前端工程師到底為什麼要寫文件?

Thu Nov 18 2021

前端開發

工程師最討厭的兩件事:

  1. 別人不寫文件
  2. 寫文件

身為一位前端工程師,其實我在職涯的初期對於「文件撰寫」這件事一直有一種很抽象的感覺,我不知道前端工程師究竟要寫什麼文件。

畢竟大多數的新手前端所開發、接觸的產品都是比較偏向大眾取向的,這種情況下大多數的產品是不需要為使用者撰寫「說明文件」的。

直到後來我接觸了比較大型的專案,與其他的前端工程師共同協作過後,才開始體會到文件的價值。

# 文件有哪幾種

說到文件,首先要釐清的就是這份文件到底是 「寫給誰看的」

如果是為了使用者而寫的我稱為說明文件,這類型的文件講白了就是使用說明書,目的是讓產品的使用者知道你的產品究竟該如何使用。

這種文件常見的範例就是我們常使用的框架、套件,例如 React、Vue 的官方文件,目的就是讓我們這些開發者(使用者)知道套件該如何使用。

再說一遍,仔細看文檔。

Evan You commented on 2 Apr 2016

還有一種就是寫給你的同事或未來的自己看的,這種我稱之為規格文件 Spec,這種文件在開發前的目的,就是對需求、架構先做一個宏觀的分析,透過這份文件讓 RD 與 PM、QA 等不同的角色產生共識。

# 需求文件到底誰來寫

這其實是一個沒有標準答案的問題,但我覺得比較好的方式是透過共筆的模式,由 PM 統整開發的需求,RD 分析需求的影響層級、預定的實作,而 QA 則擅長把需求的細節給完善。

如果在團隊的開發中能這樣各司其職,並且在開發早期就進行這樣的資訊同步,可以大大的提升開發效率,減少了後續改動架構的風險,也避免不必要的 Bug 產生。

同時這樣的文件也會是一個記錄,可以在開發階段將文件的連結記錄到 git commit message 裡面,這樣即使在未來遇到需求變更的狀況,也可以快速地透過 Git 記錄快速釐清過往的邏輯與流程。

# 開發文件與註解

而對我們前端工程師來說,最重要的實作細節,其實我是不建議寫成文件的,因為跟程式碼相關的文件、註解,只要稍有疏忽就容易與實際狀況脫節,而這種脫節的文件某種角度上其實比沒有文件還糟糕。

所以我屬於主張透過 Type 與測試來作為實作程式碼的文件。

舉例來說,利用 TypeScript 可以把 function 的參數、回傳值定義清楚,搭配上正確的命名,可以讓程式碼本身就具備說明文件的能力,而且也因為 Type system 強化了 Editor 的能力,可以更容易清晰的看到 function、組件是如何被使用,以及在哪裡使用。

而需求 Spec 的實作,也可以透過單元測試、UI 組件測試等方式來保留下來,在上面提到的需求分析文件中,QA 會提供相關的測試用例,這些測試用例就可以在這邊發揮用處。

不但可以留下可供閱覽的訊息,也大幅避免了改 A 壞 B 的風險,讓未來的我們可以放心大膽的重構程式。

# 需求分析文件常見的檢查點

上面洋洋灑灑的一大段,應該也能看出來我覺得最需要撰寫的是哪種文件了吧?

不過我想一開始說要做需求分析、寫文件,應該很多人兩手一攤不知如何下手對吧!

文章的最後我就分享一個分析文件的檢查表,讓你有個參考、檢視的方向,當然你也可以再依照自己的需求去調整內容囉。

# UI Page分析

  • 是否有 Layout 層級的調整
  • 無資料時 DOM 預設內容
  • 是否包含個人訊息之資料?頁面需確認不被 Cache
  • Popup 彈窗等共用組件樣式是否一致
  • Input Box 是否需自動填入
  • Input Box 手機鍵盤類型
  • Input Box 判空欄位驗證條件
  • 瀏覽器支援範圍確認
  • CSS Dark Mode 樣式確認
  • 多個 Warning Message 時優先度

# API

  • 跨域呼叫是否能用 Simple Request
  • API 輸入或輸出的參數有新增欄位
  • API 跟 UI 是否存在依賴關係,攸關上版流程
  • 參數型別、必要欄位、長度確認
  • 回傳欄位、資料格式、型別確認
  • 是否有返回 HTML,是否需處理 XSS 風險

# Local Storage、Cookie

  • 儲存欄位是否統一控管避免散亂
  • Cookie 是否需要跨域存取
  • 跨域請求時 Cookie 是否帶上
  • Cookie 時效確認

# URL

  • 新增路由時 URL 定義
  • URL 是否合乎標準、不使用大寫英文與規格外符號
  • 刪除網址時是否需要設置 Redirect