Недавно я наткнулся на умеренно большом питон кодовый с большим количеством MyClassAbstractFactory
, MyClassManager
, MyClassProxy
, и MyClassAdapter
т.д. классов.
Хотя, с одной стороны, эти имена указывали мне на исследование и изучение соответствующих закономерностей, они не очень описывали то, что делает класс .
Кроме того , они , кажется, попадают в список запрещенных слов в программировании: variable
, process_available_information
, data
, amount
, compute
: чрезмерно широкие имена, которые не говорят нам ничего о функции , когда используются сами по себе .
Так должно быть CommunicationManager
или скорее PortListener
? А может я вообще не понимаю проблемы ...?
design-patterns
naming
Vorac
источник
источник
Fctory
вместоFactory
, или это просто опечатка?Ответы:
AbstractFactory
действительно плохой выбор для имени. Нет никакого способа узнать, что создано этой фабрикой , и когда вы будете искать сущность, которая создаетAnimal
s, вы никогда не найдете соответствующую фабрику по имени.AnimalAbstractFactory
это не мудрый выбор, так как в большинстве языков он будет избыточным сabstract
ключевым словом в подписи.При этом, есть несколько веских причин, выделенных комментариями, на самом деле включить
Abstract
в имя: не только несколько контекстов, где у вас нет полной подписи, но только имя, но также и сохранениеAnimalFactory
интерфейса может быть разумным выбором (если, к сожалению, соглашение языка / фреймворка не заключается в добавлении префиксов к интерфейсамI
).AnimalCreationUtility
Это также был бы плохой выбор: если это фабрика , сделайте проще для людей, которые будут читать код, и назовите это фабрикой .abstract AnimalFactory
в порядке Он не имеет избыточности, и понятно , что это абстрактный завод , который делегирует создание животных для своих детей.Так что да, включение имени шаблона проектирования - хорошая идея, но оно должно быть только частью имени и не должно быть избыточным с другими частями подписи.
источник
Зависит от конкретного примера. Образец Builder почти всегда лучше всего именовать классом * Builder, в то время как Singleton обычно не нужно называть таковым.
Если вы не указали имя шаблона в имени вашего класса, и, возможно, даже если вы это сделаете, вы, как правило, должны добавить в класс комментарий, объясняющий, что он реализует определенный шаблон.
источник
...Factory
, становится разумным понять, что класс - это фабрика, если его наименование нарушает это соглашение.Весь смысл использования имен шаблонов в классах состоит в том, чтобы облегчить понимание того, что делает класс. Если вы назовете класс AnimalFactory, очевидно, что этот класс создает экземпляры Animal. Если имя вашего класса включает имя шаблона и оно не описывает, что он делает, вы либо выбрали неправильный шаблон, либо неправильно его реализовали.
источник
Я думаю, что это может работать очень хорошо. Например:
источник