Неловкий, открытый вопрос, но я всегда сталкиваюсь с этой проблемой:
Программное обеспечение, которое легко поддерживать и работать, хорошо спроектировано. Попытка сделать дизайн интуитивно понятным означает присвоение имен вашим компонентам таким образом, чтобы следующий разработчик мог определить функцию компонента. Вот почему мы не называем наши классы "Type1", "Type2" и т. Д.
Когда вы моделируете концепцию реального мира (например, клиента), это обычно так же просто, как назвать свой тип после моделирования концепции реального мира. Но когда вы создаете абстрактные вещи, которые более системно ориентированы, очень легко исчерпать имена, которые легко читаются и легко усваиваются.
Это ухудшается (для меня), когда я пытаюсь назвать семейства типов, с базовым типом или интерфейсом, который описывает, что должны делать компоненты, а не как они работают. Это естественным образом приводит к тому, что каждый производный тип пытается описать вкус реализации (например, IDataConnection
и SqlConnection
в .NET Framework), но как вы выражаете что-то сложное, например, «работает по рефлексии и ищет определенный набор атрибутов»?
Затем, когда вы наконец выбрали название для типа, который, по вашему мнению, описывает то, что он пытается сделать, ваш коллега спрашивает: «WTF это DomainSecurityMetadataProvider
действительно делает? »
Есть ли хорошие методы для выбора правильного имени для компонента или как создать семейство компонентов, не получая запутанных имен?
Существуют ли какие-либо простые тесты, которые я могу применить к имени, чтобы лучше понять, является ли оно «хорошим» и должно ли оно быть более интуитивным для других?