我不明白什么是派生的 类更可接受的命名约定。假设我们有一个基类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'吗? :) –