# 將你的程式碼文件化 寫文件通常被認為是麻煩、無聊的任務。如果從使用者的角度來思考、建立文件,就會是一件有趣的事。 ## 好讀文件的面向 文件的目的是讓讀者了解軟體的用途和使用方法。 清楚好讀的文件有四種特性: * 傳達軟體設計背後的概念 * 說明軟體行為的規格 * 說明如何執行特定動作 * 具備可用性 (usability) ### 傳達軟體設計的概念 好的文件應該要解釋軟體的用途,讓潛在的使用者能夠知道如何使用。同時,文件也應介紹重要的術語、說明文件架構,讓使用者能夠了解文件內容。 要清楚傳達軟體概念,最重要的是從使用者的觀點出發: * 確認誰是使用者 (他們是誰以及他們的技術水準) * 確認使用者對問題領域了解多少 * 確認文件內容的抽象化程度以及如何提供好的概念類比:讓使用者能夠就目前的技術知識理解文件內容 比較下列兩段文字: ```! SuperCoolTypeAnimator 是一個 SVG 字形動畫工具,允許創建並逐幀操縱源字形與相應目標字形之間的過渡,動態計算適當的過渡錨點。 SuperCoolTypeAnimator is an SVG glyph animation utility that allows the creation and frame-by-frame manipulation of transitions between source glyphs and their respective target glyphs,calculating appropriate transitional anchors on the fly. ``` ```! SuperCoolTypeAnimator 是一個 JavaScript 函式庫,讓您能夠輕鬆地將小段文字從一個字體樣式動畫到另一個字體樣式。 SuperCoolTypeAnimator is a JS library that allows you to animate small pieces of text from one typeface to another typeface with ease. ``` 使用術語是把雙面刃:建議只使用大家(應該)都懂的基本術語,避免使用太艱深或是自己發明的術語。 ### 說明軟體行為的規格 好的文件會清楚說明軟體介面的特性和行為。 說明軟體規格通常是文件裡最簡單好寫的部份: * 基本上就是在描述程式碼 (包含測試的內容):如果覺得很難描述,很可能代表程式碼本身寫得過於複雜。 * 可以自動生成:有不少工具會使用程式碼中的靜態型別或註解來生成文件。 * 格式固定:API 該傳入什麼參數並解釋每個參數的意義和用法,還有輸出值是什麼。 最重要的是,要明確讓使用者了解該怎麼使用這些 API。 ```! removeWords( subjectString, wordsToRemove ); * `subjectString(String)`: 這是指定的詞將從中刪除的字串。如果您未傳遞 String 類型,則傳遞的值將轉換為字串。 * `wordsToRemove(Array)`:這是包含您希望刪除的詞的陣列。null 或空陣列將不會刪除任何詞。 ``` 注意: * 儘量提供足夠的資訊,讓其他沒有一樣背景知識的工程師也能順利使用。必要的時候,也要提供該領域的相關知識。 * 確保資訊正確、即時:從註解自動產生文件,可以減少資訊過時的問題 * 提供使用範例或教學文章 ### 說明如何執行特定動作 好的文件要教導使用者如何完成常見的任務。這些內容通常叫做 walkthroughs、tutorials (教學文章/影片)、how-tos 或 recipes。 教學文件建議內容: * 明確指出所需的硬體、軟體環境和效能需求,以及在執行前應該要完成的事 * 教學步驟必須明確,讓使用者可以跟著模仿。儘量提供指令範例,也要告知使用者怎麼確認自己成功達成步驟。可以的話,也試著說明每個步驟的意義。 * 教學文件設定可以達成的目標,而且使用者能夠觀察到自己已達成目標。 這部份的文件是最有挑戰性的:擔任指導者的角色,同時還要以不了解這個軟體的人的角度出發。 https://support.apple.com/zh-tw/guide/app-store/fir9b2ea074e/mac ### 具備可用性 (usability) 先前的部份與「文件內容」有關,可用性則關於「如何呈現內容」: * 內容份量適中,太多太少都不好。 * 內容要一致、正確。 * 文件要有清楚、分層的架構。 * 文件要容易搜尋、瀏覽:集中在同一地方、能夠搜尋而且有 accessibility。 * 美觀且注重排版 由於每個使用者的偏好不同,通常不會以一份教學文件打天下,而是會用不同方式提供教學內容:研討會、白皮書、教學文章、FAQ、教學影片等等。 ### 處處皆文件 如果把文件定義為「學習軟體的方式/管道」,會發現有很多種類的文件,例如: * 圖片、圖表 * 多媒體教學 (影片、podcast、投影) * 公開的 QA 討論 (GitHub issues) * 社群論壇 (StackOverflow) * 研討會、專題討論、技術小聚 * 官方支援 (實體或線上) * 課程 * 測驗 * 錯誤處理流程和訊息 ### 當讀者沒有技術背景時 當開發人員與不具技術知識的終端使用者或利害關係人 (例如公司管理層或非技術部門的人員),必須調整溝通的方式: * 調整內容抽象化的程度 * 避免太過艱深的術語 * 持續取得對方的回饋:不斷向對方確認是否能夠了解內容,不要因為他們沒有任何表示就當作他們都聽懂。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up