2010-06-03 34 views
10

Stackoverflow的用戶, 你如何防止用大體積的方法創建大型班級。當最後期限緊的時候,你最終會試圖破解一些事情,並最終成爲一個混亂,需要重構。你如何讓自己和你的同事創造巨大的班級

對我來說,一種方法是從測試驅動的開發開始,這有助於良好的類設計以及SRP(單一責任原則)。

我也看到開發人員只需雙擊控件並在事件方法中輸入行後觸發。

您有什麼建議?

+1

+1偉大的問題 - 我同意你的TDD消化。良好的代碼結構和TDD互相恭維對方 – 2010-06-03 13:23:22

回答

7

我想這取決於你的內部流程和任何東西一樣多。

在我的公司,我們練習同行評審,所有得到授權的代碼都必須由另一位開發人員'合作',您必須向其解釋您的代碼。

時間限制是一回事,但如果我複習那些擁有長長的類的代碼,那麼我不會同意簽入。

起初很難習慣,但在一天結束時,對每個人都會更好。

此外,擁有一名高級開發人員,他是一名優秀的班級設計的支持者,並且願意並且能夠舉例說明,因此非常有幫助。

最後,我們經常做一個編碼'show and tell'session來向我們的同事展示我們的工作,這有助於我們不要用醜陋的代碼來做這件事!

+2

是的,我同意。你會在代碼審查中看到類似的東西。你只需要記住這是你的工作,指出這樣的事情。有時候我不好意識到這個人做錯了什麼,但是這讓他們在一天結束時更好。 – 2010-06-03 13:28:13

+0

事實上 - 如果它讓他們的生活變得更輕鬆,當你被要求維護時,它會讓你的生活更輕鬆! – 2010-06-03 13:34:32

1

使用類似Resharper和Extract Method命令的工具。

1

長類是一種可能的不良代碼氣味。

通過創建很多小的類來彌補過大的類可能會產生它自己的問題。您的項目中的新工程師可能會發現難以遵循代碼流程來計算出發生的情況。這個問題的一個神器可以是非常高的調用堆棧,通過許多小類執行嵌套。

0

我們是一個java和maven商店,其中一個...我想你可以說我們使用的法醫方法是優秀的FindBugs,PMD和javancss插件。所有這些都會給出警告,說明方法中過長的長度,並且圈複雜度計算可能非常令人大開眼界。

0

對於我來說,避免經常違反SRP的大類的一個最重要的步驟是使用簡單的依賴注入框架。這讓我不必考慮如何將東西連接在一起。我只使用構造函數注入來保持設計免於週期。像Resharper這樣的工具有助於從構造函數參數中初始化字段。這種組合導致創建和連接新類的開銷幾乎爲零,並暗示鼓勵我更詳細地構造行爲。

如果數據與行爲保持分離,並且您的語言支持可用於分離在依賴關係圖向下方向流動的通信的事件,則這一切都最有效。

0

在您的自動構建中使用一些靜態代碼分析工具,並編寫/配置/使用一些規則,以便例如某人必須在他/她打破它時寫出正當性。

1

另一個建議是隻做問題。不要玩「假如」遊戲並嘗試過度設計解決方案。這背後有「保持簡單,愚蠢」的想法。