OK,不能肯定這是正確的事情,但這裏是我決定做:
首先,我認爲其他的Rails開發者熟悉所有的至少意圖我在標準模型,視圖,控制器目錄中編寫的代碼。所以,我開始在其他源文件中添加RDoc。事實證明,我已經在lib/helpers和app/helpers中建立了一個公平的代碼集合,所以從那裏開始。我爲每個幫助器方法編寫了相當典型的函數級文檔,重點關注意圖,並確保我詳細說明了方法和參數命名的助記符。我沒有描述大多數角落案例,參數交互或錯誤檢查,只是將這些細節留給每個方法的單元測試讀取。
我發現我是這樣做的同時,有相當我到方法簽名製成,而不是記錄已經做了一些愚蠢的幾個變化。 (你是否讀過@unclebobmartin的Clean Code?我認爲它在所有方面都很出色,特別是在命名和自我記錄方面。)因此,除了作爲RDoc增加練習之外,我最終花費了大量的時間(需要的)重構 - 在我第一次編寫代碼之後重構過程中沒有發生的事情,因爲我還沒有足夠的距離。也許80%的時間我「加入RDoc」花在我的「助手」目錄中的代碼中,其中大部分是重構而不是寫作。所以,即使沒有人讀RDoc的本身,我認爲這是一個寶貴的鍛鍊和我很高興我花的時間
接下來,我轉向控制器。我將默認的單行註釋與每個控制器方法在腳本生成的腳本作爲RDoc的第一行(例如「#GET /」)進行匹配。對於只執行標準Rails的方法,我沒有添加任何其他文檔。我發現我在我的控制器方法中做的值得記錄的獨特的事情必須與他們返回的內容(例如HTML以外的數據格式),它們的用途(超出標準REST模型的操作,比如那些旨在服務於Ajax請求)以及它們是否使用非標準的URL格式。 (這實際上是我的路由配置的文檔,但是因爲config/routes.rb沒有用於生成RDoc ....)我沒有描述我的行爲,因爲我的自動化測試充分覆蓋了所有有些人需要知道的案例/行爲。最後,我添加了提及控制器操作的模型類的類級註釋,不是因爲人們無法猜測,而是爲了在生成的HTML頁面中有一個方便的鏈接。
末,我曾在我的模型。再次,我沒有記錄行爲(業務邏輯),考慮到我的單元測試在這裏足夠了。我所做的就是提醒讀者,字段定義在db/schema.rb中(感覺很愚蠢,但是如果一個剛接觸Rails的開發人員試圖弄清楚事情的真相,提醒所有魔法方法的基名不會受到傷害)。我也意識到,我的很多模型的行爲是通過模型類直接調用Rails的聲明輔助方法實現的(驗證_...,belongs_to等)。與其試圖描述這些東西完成什麼(畢竟,期望的模型行爲是由測試「描述」的),我只是提醒我們看一下模型的來源。 (這是一種恥辱,RDoc沒有意識到Rails約定能夠提取和記錄這些事情,就像Ruby常量定義一樣。)
就是這樣。也許我需要寫一些RDoc,但我認爲它足夠輕便,隨着代碼的發展它會得到維護,並且它與我的單元測試「表達」的東西完全不重疊。希望它填補了Rails開發人員從常規中可以推斷的內容和你只能從源代碼中找出的東西之間的差距。 (儘管我現在注意到越來越多的衝動將更多作品從我的觀點引入幫助者,儘管他們沒有被重用,並且這意味着要失去ERB的內聯HTML,以便我可以爲他們編寫描述。