Подтвердить что ты не робот

Является ли создание пустого класса исключительно для того, чтобы отличить его от хорошей практики другого класса?

У меня есть класс CardStack. У меня есть несколько классов, которые наследуют от CardStack, например. Cascade, Deck, Foundation и т.д.

Foundation не нужно добавлять какие-либо функции в CardStack, но для целей показа мое приложение должно знать, какой из CardStack на самом деле Foundation s.

Кстати, у меня нет такой функции CardStack.Display() (я использую шаблон модели-представления-контроллера, где объект View просто запрашивает Model, чтобы узнать, с какими объектами он имеет дело).

Мне кажется хорошо, но есть ли причина не делать этого?

class Foundation : public CardStack
{

};

class Model
{
    Cascade cascade[10];
    Foundation foundations[10];
    ...
};
4b9b3361

Ответ 1

В этом нет ничего плохого.

Сделайте это все время.

В будущем может быть разница в структуре, поведении или реализации. На данный момент у них есть много общих функций.

Ответ 2

Я не вижу никаких технических проблем, поэтому, возможно, вы делаете это по смысловым соображениям. В этом случае убедитесь, что вы документируете причину, по которой ОЧЕНЬ ЧЕТКО, чтобы позднее программисты по обслуживанию не пытались изменить ситуацию.

Ответ 3

Да, это действительно и полезно. Пустой класс может выступать в качестве заполнителя для будущей функциональности (в качестве примера). Конечно, немного документации в порядке, если рассматриваемый класс "подключен" к программе каким-либо образом; -)

В вашем случае выше генерируемый код С++ не будет обременен... но читаемость вашего кода увеличивается.

Ответ 4

Я делаю это все время для списков

public class MyObjects : List<MyObject> { }

Ответ 5

Это хорошая практика, так как она семантически понятна почти с почти без затрат и допускает модификации, когда необходимость в подклассах ведет себя по-разному.

Ответ 6

Ничего плохого в этом, я делаю это часто. Мне это лучше, чем пустые "маркерные" интерфейсы (на Java). Как отмечали другие, вам, вероятно, следует прокомментировать тот факт, что реализация должна быть пустой (или, возможно, "зарезервирована для будущего использования" ), но в противном случае ИМХО, вы в порядке.

Ответ 7

То, как вы это делали в классе модели, мне кажется, что typedef будет достаточно, чтобы отличать имена (и читаемость!): http://en.wikipedia.org/wiki/Typedef