2009-08-12 42 views
7

OK,所以很容易來命名(爲此事或類)的接口,如果你很容易想到一個名詞:用戶,窗口,數據庫,流等接口命名爲形容詞

什麼形容詞或形容詞概念?例如有時間戳(HasTimestamp,Timestamped,Timestampable ...?)或者被跟蹤或觀看的東西(可跟蹤,IsTracked,可看,IsWatched ...?)

回答

7

我傾向於使用-able後綴。有Java庫像這樣的命名約定也是許多很好的例子:

例如一些有標籤將被命名爲Taggable此命名慣例下,一些具有時間戳Loggablesince

時間戳通常用於記錄事件,在這種情況下,日誌中的每個事件都會標記一個時間戳。在文件系統中,時間戳可能意味着創建或修改文件的存儲日期/時間。

+0

雖然我通常也遵循這種模式,但「能夠」並不總是乾淨地適合一些更復雜的 - 例如,IDeterminesEmptyValue。可能是ICanDetermineEmptyValue。 IEmptyValueDeterminable並沒有太多意義。 – 2009-08-12 15:37:40

+0

我喜歡你的整體推理,但對於我的口味而言,「可記錄」與時間戳相距太遠。 – 2009-08-12 17:04:40

+0

@Jason:我必須承認,Loggable有點*強制作爲名稱:-) – dfa 2009-08-12 17:25:13

0

這是一個很好的問題。我嘗試使用名詞命名我的所有接口和類。所以我最終可能會名稱爲ITrackingTarget,IObservee。時間戳很有意思。也許ITimestamp本身?

使用Visitor模式,你會調用接口來表示接受IVisitor的對象嗎?

+0

VisitableObject? VisitorUser? – neuro 2009-08-12 15:31:16

0

我也傾向於使用名詞。

對於可以打開/關閉一個對象,你可以隨時使用詳細OpenableObjectOpenableInterface:你最終即使組成一個名詞。

由於它是詳細(和有點傻),我傾向於使用可開啓,而不是OpenableObject。我使用OpenableInterface如果我想強調它是一個接口的事實。

對於使用依賴反轉模式我有時使用「用戶」後綴對象:ImageUser,LoggerUser,ServiceXUser,...

這是更好地使用名詞,但我更喜歡在清晰度嚴格遵守規則。