在軟件的文檔中舀锨,有需求文檔岭洲,設(shè)計文檔(可能還分概要和詳細設(shè)計),測試設(shè)計等等諸多文檔雁竞。它們各有各的用途钦椭,本文就探討下設(shè)計文檔要不要寫,寫些什么的問題碑诉。
先設(shè)計再編碼彪腔,還是直接編碼。初入門的程序員进栽,喜歡拿到需求后往往就開始寫代碼德挣,寫著寫著要么寫不下去,覺得走題了快毛,要么覺得設(shè)計有問題格嗅,得推翻重來。當你經(jīng)驗豐富了以后唠帝,會先大致想好怎么做屯掖,然后把函數(shù)原型寫好,最后再一個個函數(shù)實現(xiàn)出來襟衰。就像寫文章贴铜,前者想到內(nèi)容A就寫內(nèi)容A,想到B就寫B(tài)瀑晒,忽略了主線绍坝;而后者先做提綱,再提筆充實苔悦,避免了很多彎路轩褐。
所以,先設(shè)計再編碼玖详,在編碼中完善設(shè)計把介,一般是大家都認同的。那么腦子中有提綱了蟋座,是否要用文檔寫下來呢劳澄?
寫設(shè)計文檔的過程,是幫助你深入理解需求蜈七,探求實現(xiàn)方式是否可行的過程秒拔。而且在寫提綱的過程中,反復(fù)思考下,你常常會發(fā)現(xiàn)更優(yōu)的實現(xiàn)方案砂缩。
好記憶不如爛筆頭作谚。過了很久之后,還記得某個問題怎么解決的嗎庵芭?當時思路清晰妹懒,可現(xiàn)在都記不起了,還要具體地去翻代碼嗎双吆?這里眨唬,如果在文檔中記錄了當時解決該問題的思路,參考文檔好乐,以及可選的其它方案匾竿,就能迅速的進入當時的狀態(tài),一切都很快清晰起來蔚万。
文檔中寫些什么岭妖。首先是概念強化,在需求中有哪些對象(名詞)反璃,中英文分別是什么昵慌,對象間是什么關(guān)系。這樣在代碼中為對象或函數(shù)命名也會規(guī)范和一致淮蜈。
其次是接口斋攀,包括軟件所有暴露出來的行為。先是外部接口梧田,比如淳蔼,軟件有哪些命令行參數(shù)?用戶可以設(shè)置哪些環(huán)境變量來影響行為柿扣?它與其它系統(tǒng)如何交互?特別是與數(shù)據(jù)庫的設(shè)計闺魏,記錄的就是與數(shù)據(jù)庫系統(tǒng)交互的接口未状。然后是內(nèi)部接口,記錄子模塊間如何通訊析桥,通訊協(xié)議司草,格式等。
再次泡仗,是專題問題埋虹。對某個獨立的需求,設(shè)計其相關(guān)的數(shù)據(jù)模型娩怎,接口等搔课。對某些疑難問題,記錄下參考資料截亦,核心難點怎樣解決爬泥,可選辦法以及如何決策等柬讨。
在寫文檔時有個重要原則:不要重復(fù)。在其它地方能夠了解到的內(nèi)容袍啡,就不必寫到文檔里踩官,一是使文檔更有價值,二是避免更新的麻煩境输。比如蔗牡,如果軟件能輸出完整的命令行幫助信息,或是軟件本身的幫助文檔已經(jīng)包括了這些內(nèi)容嗅剖,那么只要在設(shè)計文檔里加上鏈接辩越,讓讀者去更專業(yè)的地方來找就好了。一般過程是這樣的窗悯,先是什么都寫到設(shè)計文檔中区匣,然后再逐漸細分出其它文檔。
創(chuàng)作之前蒋院,先想設(shè)計亏钩,寫出提綱,再圖實現(xiàn)欺旧。以此之道姑丑,終會受益。