2011-11-24 85 views
3

我不明白什麼是派生的 類更可接受的命名約定。假設我們有一個基類Fruit,從中我們可以推出蘋果類, 橙和百香果。基礎類別的名稱應該出現在 派生的名稱中,但是它應該出現在類名稱的開頭還是末尾?Pythonic的方法來命名派生類

哪個更Python:FruitAppleFruitOrangeFruitPassionFruitAppleFruitOrangeFruitPassionFruitFruit

+7

「這是共識,基類的名稱應該出現在派生的...」 - 真的嗎?當然,在很多情況下它是有道理的,但我認爲這不是必要的。 AppleFruit中的'Fruit'沒有添加任何信息。 「FruitPassionFruit」特別殘酷。此外,您只能在較大的層次結構中採用此方法。你沒有在你的所有課程名稱中包含「對象」,是嗎? – delnan

+1

也許其他人會不同意,但我只會與'Apple','Orange'和'PassionFruit'一起去。該類名稱的目的是爲了瞭解它的功能,而不是列出實現細節。此外,如果您決定'OrangeFruit'應該來自'CitrusFruit',那麼您不需要在任何地方都將它重命名爲'OrangeCitrusFruit'。 – James

+1

你真的認爲['gtk.ColorSelectionDialog'](http://developer.gnome.org/pygtk/stable/class-gtkcolorselectiondialog.html)應該重命名爲'gtk.ColorSelectionDialogWindowBinContainerWidgetObject'嗎? :) –

回答

5

使用常識。

在你的例子中,正如其他人所討論的那樣,Fruit部分顯然是多餘的。只需使用Apple,Orange等。讓我們考慮使用另一個例子。

如果我有一個名爲Plugin的基類,我會將派生類FormattingPlugin命名爲「插入格式」。替代方案PluginFormatting的內容爲「格式化插件」。我想這個閱讀是主觀的,所以請用你自己的最佳判斷。 但是不要只命名它Formatting,因爲,不像水果的例子,這不是一個足夠完整的類描述。

+0

+1非常好的例子! – delnan

1

在上面列出的具體示例中,每個人都知道這些東西都是水果,所以我認爲沒有必要在子類名稱中包含Fruit

更一般地說,只要它是一致的,無論你選擇什麼都很好。

我往往喜歡先和描述符(形容詞)命名的對象之後的法國方式,所以如果我不得不選擇,我寧願FruitAppleFruitOrange,等過AppleFruitOrangeFruit(和冗餘PassionFruitFruit :) )。它還具有按字母順序顯示集羣中的所有子類的優勢,這可能有助於某些IDE或代碼完成者。

另一方面,如果您將標準庫作爲模型,您會發現SpecificBase格式的命名子類的首選項。例如,日誌記錄模塊將StreamHandlerFileHandler定義爲Handler的子類。

+2

顯示所有子類的另一方面是,必須鍵入more,直到名稱是唯一的,並且可以製表符完成它。 –

4

「共識」是一個難以捉摸的概念。你可以做的是看標準庫中使用的命名約定,以瞭解Python社區中的標準。

例如,這裏有一個廣泛的相關類和子類的列表:http://docs.python.org/library/internet.html

在雖然結束,它是遵循的原則口味的問題是這是最清晰的用戶類名是最好的名。