我不明白什麼是派生的 類更可接受的命名約定。假設我們有一個基類Fruit
,從中我們可以推出蘋果類, 橙和百香果。基礎類別的名稱應該出現在 派生的名稱中,但是它應該出現在類名稱的開頭還是末尾?Pythonic的方法來命名派生類
哪個更Python:FruitApple
,FruitOrange
和FruitPassionFruit
或AppleFruit
, OrangeFruit
和PassionFruitFruit
?
我不明白什麼是派生的 類更可接受的命名約定。假設我們有一個基類Fruit
,從中我們可以推出蘋果類, 橙和百香果。基礎類別的名稱應該出現在 派生的名稱中,但是它應該出現在類名稱的開頭還是末尾?Pythonic的方法來命名派生類
哪個更Python:FruitApple
,FruitOrange
和FruitPassionFruit
或AppleFruit
, OrangeFruit
和PassionFruitFruit
?
使用常識。
在你的例子中,正如其他人所討論的那樣,Fruit
部分顯然是多餘的。只需使用Apple
,Orange
等。讓我們考慮使用另一個例子。
如果我有一個名爲Plugin
的基類,我會將派生類FormattingPlugin
命名爲「插入格式」。替代方案PluginFormatting
的內容爲「格式化插件」。我想這個閱讀是主觀的,所以請用你自己的最佳判斷。 但是不要只命名它Formatting
,因爲,不像水果的例子,這不是一個足夠完整的類描述。
+1非常好的例子! – delnan
在上面列出的具體示例中,每個人都知道這些東西都是水果,所以我認爲沒有必要在子類名稱中包含Fruit
。
更一般地說,只要它是一致的,無論你選擇什麼都很好。
我往往喜歡先和描述符(形容詞)命名的對象之後的法國方式,所以如果我不得不選擇,我寧願FruitApple
,FruitOrange
,等過AppleFruit
,OrangeFruit
(和冗餘PassionFruitFruit
:) )。它還具有按字母順序顯示集羣中的所有子類的優勢,這可能有助於某些IDE或代碼完成者。
另一方面,如果您將標準庫作爲模型,您會發現SpecificBase
格式的命名子類的首選項。例如,日誌記錄模塊將StreamHandler
和FileHandler
定義爲Handler
的子類。
顯示所有子類的另一方面是,必須鍵入more,直到名稱是唯一的,並且可以製表符完成它。 –
「共識」是一個難以捉摸的概念。你可以做的是看標準庫中使用的命名約定,以瞭解Python社區中的標準。
例如,這裏有一個廣泛的相關類和子類的列表:http://docs.python.org/library/internet.html
在雖然結束,它是遵循的原則口味的問題是這是最清晰的用戶類名是最好的名。
「這是共識,基類的名稱應該出現在派生的...」 - 真的嗎?當然,在很多情況下它是有道理的,但我認爲這不是必要的。 AppleFruit中的'Fruit'沒有添加任何信息。 「FruitPassionFruit」特別殘酷。此外,您只能在較大的層次結構中採用此方法。你沒有在你的所有課程名稱中包含「對象」,是嗎? – delnan
也許其他人會不同意,但我只會與'Apple','Orange'和'PassionFruit'一起去。該類名稱的目的是爲了瞭解它的功能,而不是列出實現細節。此外,如果您決定'OrangeFruit'應該來自'CitrusFruit',那麼您不需要在任何地方都將它重命名爲'OrangeCitrusFruit'。 – James
你真的認爲['gtk.ColorSelectionDialog'](http://developer.gnome.org/pygtk/stable/class-gtkcolorselectiondialog.html)應該重命名爲'gtk.ColorSelectionDialogWindowBinContainerWidgetObject'嗎? :) –