我將在此處對我對When a method has too many parameters?發表的評論展開討論,其中OP對於具有97個參數的其他人的功能存在小問題。如何提高功能的可維護性
我非常信任編寫可維護的代碼(而且它通常比編寫代碼更容易,因此Steve McConnell(稱讚他的名字)的短語「只寫代碼」)。
由於統計了大多數車禍發生在路口的情況,而且我的經驗(ymmv)顯示界面上出現大多數「異常」,所以我會列出一些我爲避免界面誤解而做的事情,並邀請您的評論我錯了。
但是,更重要的是,我邀請您的建議,使事情更具預防性(請參閱,畢竟有一個問題 - 如何改進的東西?)。
- 適當的文檔,以(最新)DoxyGen格式註釋的形式描述每個參數的性質和海豚。
- 絕對否帶有全局變量作爲隱藏參數的後門詭計。
- 嘗試將參數限制爲六個或八個。如果更多,則將相關參數作爲結構傳遞;如果他們不相關,那麼認真重新考慮功能。如果需要這麼多的信息,維護起來太複雜了嗎?它可以分解成幾個更小的功能嗎?
- 儘可能地使用CONST並且有意義。
- 一個編碼標準,它表示輸入參數先來,然後是輸出,最後是輸入/輸出,這些都是由函數修改的。
我也#定義一些空宏作出聲明更容易閱讀:
#
定義輸入
#
定義輸出
#
定義MODIFY
布爾DoSomething的(INPUT INT howOften,MODIFY Wdiget *進myWidget, OUTPUT WidgetPtr * const nextWidget)
只是一些想法。我如何改進這些?謝謝。
將參數限制爲六個或八個?爲什麼不是七?什麼時候最多可以是一個或另一個? – waiwai933 2010-02-12 05:41:30
標題是怎麼回事? – womp 2010-02-12 05:44:46
您的DoSomething功能的參數無序。 :-) – xpda 2010-02-12 17:23:05