Определите унаследованный класс в библиотеке базовых классов или новом проекте - PullRequest
1 голос
/ 10 августа 2010

Я написал абстрактный базовый класс TCPIP-сервер в своем собственном пространстве имен / библиотеке.В настоящее время у меня есть производный класс (более конкретный сервер TCPIP; с DataHandler) в проекте .exe решения.

Я почти на 100% уверен, что так и будет, но часть меня хочетпоместите производный класс в проект базового класса.Какие есть веские причины для / против этого

Ответы [ 4 ]

2 голосов
/ 10 августа 2010

Я считаю, ЯГНИ , ПОЦЕЛУЙ и Правило трех применимо здесь.Если у вас нет планов немедленного повторного использования производного класса, сохраните его в пространстве имен приложения.Если позже вы обнаружите, что есть второй проект / приложение, которое может использовать что-то вроде вашего производного класса, то придерживайтесь своего плана и используйте его в качестве «шаблона» для создания другого аналогичного производного класса путем вырезания и вставки.вы найдете третий повод сделать это снова, затем вы можете посмотреть и посмотреть, есть ли там достаточно полезный подкласс.Не отвлекайтесь, пытаясь обнаружить абстракции многократного использования слишком рано.

1 голос
/ 10 августа 2010

Если вы планируете, чтобы другие exe использовали ваш производный класс, будет полезно, если он там, а не в exe.

1 голос
/ 10 августа 2010

«Зачем мне нужна библиотека базовых классов»?

Обычно, потому что вы хотите использовать ее в нескольких проектах.

Если это так, вам нужно использовать производнуюкласс в других проектах?

0 голосов
/ 10 августа 2010

Мое предположение в пользу этого подхода состоит в том, что если я помещу класс dervied в пространство имен .exe, у меня будет доступ ко всем этим классам (например, к очереди данных).Однако, если я помещу производный класс в базовый проект, мне придется предоставить доступ ко всем классам в пространстве имен .exe, чтобы использовать только один из них (используя DotExeNamespace;).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...