Pythonic способ назвать производные классы - PullRequest
3 голосов
/ 24 ноября 2011

Я не могу понять, что является более приемлемым соглашением об именах для производных классов.Допустим, у нас есть базовый класс Fruit, из которого мы получаем классы для яблок, апельсинов и маракуйи.Это консенсус, что имя базового класса должно появляться в производных, но должно ли оно появляться в начале имени класса или в конце?

Что более Pythonic: FruitApple, FruitOrange и FruitPassionFruit или AppleFruit, OrangeFruit и PassionFruitFruit?

Ответы [ 3 ]

5 голосов
/ 24 ноября 2011

Используйте здравый смысл.

В вашем примере, как обсуждали другие, часть Fruit явно избыточна.Используйте просто Apple, Orange и т. Д. Давайте рассмотрим другой пример.

Если бы у меня был базовый класс с именем Plugin, я бы назвал производный класс FormattingPlugin, который я прочитал как«Плагин, который делает форматирование».Альтернатива PluginFormatting читается как «форматирование плагинов».Я думаю, что чтение субъективно, так что используйте свое собственное мнение.Но не называйте это просто Formatting, потому что, в отличие от примера с фруктами, это не достаточно полное описание того, что делает класс.

4 голосов
/ 24 ноября 2011

«Concensus» - неуловимая концепция.Однако вы можете взглянуть на соглашения об именах, используемые в стандартной библиотеке, чтобы понять, что является нормой в сообществе Python.

Например, вот один обширный список связанных классов и подклассов: http://docs.python.org/library/internet.html

В конце концов, это вопрос вкуса, руководствуясь принципом, что имена классов, которые являются наиболее чистымидля пользователя самые лучшие имена.

1 голос
/ 24 ноября 2011

В конкретном примере, который вы перечислили выше, все знают, что эти вещи являются фруктами, поэтому я думаю, что нет необходимости включать Fruit в имена подклассов.

В целом, все, что вы выбрали, будет хорошо, покакак это соответствует.

Мне нравится сначала французский способ именования объекта и дескрипторов (прилагательных) впоследствии, поэтому, если бы мне пришлось выбирать, я бы предпочел FruitApple, FruitOrange и т. Д., А не AppleFruit,OrangeFruit (и избыточный PassionFruitFruit :)).Он также имеет преимущество в том, что показывает все подклассы в кластере в алфавитном порядке, что может помочь некоторым средам разработки или завершителям кода.

Если, с другой стороны, вы берете в качестве модели стандартную библиотеку, вы 'найду предпочтение именования подклассов в формате SpecificBase.Например, модуль ведения журнала определяет StreamHandler и FileHandler как подклассы Handler.

...