Ответ 1
В этом нет ничего плохого.
Сделайте это все время.
В будущем может быть разница в структуре, поведении или реализации. На данный момент у них есть много общих функций.
У меня есть класс 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];
...
};
В этом нет ничего плохого.
Сделайте это все время.
В будущем может быть разница в структуре, поведении или реализации. На данный момент у них есть много общих функций.
Я не вижу никаких технических проблем, поэтому, возможно, вы делаете это по смысловым соображениям. В этом случае убедитесь, что вы документируете причину, по которой ОЧЕНЬ ЧЕТКО, чтобы позднее программисты по обслуживанию не пытались изменить ситуацию.
Да, это действительно и полезно. Пустой класс может выступать в качестве заполнителя для будущей функциональности (в качестве примера). Конечно, немного документации в порядке, если рассматриваемый класс "подключен" к программе каким-либо образом; -)
В вашем случае выше генерируемый код С++ не будет обременен... но читаемость вашего кода увеличивается.
Я делаю это все время для списков
public class MyObjects : List<MyObject> { }
Это хорошая практика, так как она семантически понятна почти с почти без затрат и допускает модификации, когда необходимость в подклассах ведет себя по-разному.
Ничего плохого в этом, я делаю это часто. Мне это лучше, чем пустые "маркерные" интерфейсы (на Java). Как отмечали другие, вам, вероятно, следует прокомментировать тот факт, что реализация должна быть пустой (или, возможно, "зарезервирована для будущего использования" ), но в противном случае ИМХО, вы в порядке.
То, как вы это делали в классе модели, мне кажется, что typedef будет достаточно, чтобы отличать имена (и читаемость!): http://en.wikipedia.org/wiki/Typedef