2009-08-13 61 views
12

我經常在決定如何命名一個類時遇到困難。不是因爲班級的目的不清楚,而是因爲這樣的名字,如xxx ***控制器***,xxx ***經理***,xxx ***信息***,xxx ***助手*** ,xxx *** Util ***等,我到處看到。類命名混沌

如果我有一個通過HTTP上傳某些東西的類,我傾向於將它命名爲HttpUploader或其他東西。我見過很多類似HttpUploadManager,HttpTransmissionController,HttpUploadHelper等類的實例。

我有點困惑到何時使用控制器,管理器,信息等。有什麼文章或書籍可以幫助我成爲更好的班級名字嗎?

PS:另外,相比於HttpTransmissionController或HttpDispatchManager當像HttpSender名字聽起來很貧血:P

+1

我的直覺是儘可能遠離xxxManager,xxxController等。 我最近看到這句話:「計算機科學中只有兩件難事:緩存失效和命名事情。」 - Phil Karlton – 2009-08-13 21:45:30

+0

@Dawie Strauss MVC會議決定在任何控制器名稱之後加上'Controller'。 – 2009-09-10 15:21:56

+0

@George Stocker你有我:-)在問題中的所有例子(xxxController,xxxManager,xxxInfo,xxxHelper,xxxUtil)我認爲xxxController是最不可疑的。其他人往往會增加比價值更多的困惑。 – 2009-10-22 12:32:08

回答

12

命名是很難的,所以不要擔心,你掙扎,因爲大家都這樣做。相信我,它永遠不會變得更輕鬆!

個人與整個控制器/經理/助手/ Util /無論後綴的事情,我傾向於使用的規則,如果它是一個約定(例如,對於ASP.NET MVC約定控制器類名稱結束於「控制器」 )然後使用後綴,否則請嘗試像地獄一樣避免它。我寧願有一個名爲HttpUploader的課程,而不是HttpUploadManager

關於命名的最重要的事情是,班級應該按照自己的意思去做。如果它是一個使用HTTP上傳內容的類,那麼HttpUploader就可以完全描述它。使用像HttpUploadManager這樣的花式名稱並不能告訴我它做了什麼。它是否自己上傳東西?它是否管理多件事的上傳?我喜歡儘可能簡單地描述類/方法/目的。我發現一個很好的指導方針是,如果你真的很難命名一些東西,比如你花了很多年時間思考,你仍然無法提煉出一個合理的名字,那麼你可能需要重構任何東西你正試圖命名爲更小,更具體的組件。

2

您也可以嘗試查看更多描述性(多彩的?)後綴列表:ManagerManager

與通常的建議有關的問題是,許多類所做的事情都沒有很好的現實世界等價,所以我們的傳統詞彙可能不太匹配。例如,一個HttpUploader可能與另一個可以幫助上傳,做一些協調或者(敢說我這麼說)的類來管理上傳。這種中間人協調在軟件中很常見,但用來形容它的詞語都很含糊,以至於不容小覷。

2

該書Clean Code有關於變量名稱的完整章節。好東西。

+0

謝謝。剛剛下令。 – akirekadu 2009-08-17 20:29:09