Запись для других

Что является основными и самыми важными правилами (за и против), я должен подать заявку, когда я пишу класс, который будет наследован третьим лицом.
Спасибо.

7
задан There is nothing we can do 11 June 2010 в 11:02
поделиться

4 ответа

Основное правило: Сделайте интерфейсы простыми для правильного использования и трудными для неправильного использования . Это из 3-го издания превосходной книги Скотта Мейерса Эффективный C ++ .

Вот еще несколько хороших руководств по дизайну классов.

11
ответ дан 6 December 2019 в 08:41
поделиться

Я работаю на Java, поэтому правила наследования немного отличаются, но вот моя точка зрения:

  1. Не бойтесь наследования. В большинстве языков он есть в той или иной форме, это очень мощная парадигма, и она остается сложной, только если вы ее не используете.
  2. Не думайте, что вы знаете, как будущие разработчики собираются использовать ваши классы позже. Я не могу подсчитать, сколько раз мне приходилось копировать весь класс только потому, что какой-то метод или член были закрытыми. Это «О» в ответе Энди выше - и это ОГРОМНАЯ точка.
1
ответ дан 6 December 2019 в 08:41
поделиться

SOLID...

S    SRP    Single responsibility principle, the notion that an object
            should have only a single responsibility.
O    OCP    Open/closed principle, the notion that “software … should
            be open for extension, but closed for modification”.
L    LSP    Liskov substitution principle, see also design by contract.
I    ISP    Interface segregation principle, the notion that “many client
            specific interfaces are better than one general purpose interface.”
D    DIP    Dependency inversion principle, the notion that one should
            “Depend upon Abstractions. Do not depend upon concretions.”
            Dependency injection is one method of following this principle.

взято из http://en.wikipedia.org/wiki/Solid_%28object-oriented_design%29

(или любой другой акроним, который вам нравится)

HTH

Andy

2
ответ дан 6 December 2019 в 08:41
поделиться

Правила:

  1. Не делайте этого. По возможности избегайте использования наследования.

  2. Класс должен иметь хотя бы одну виртуальную функцию. в частности, деструктор должен быть виртуальным.

  3. Вероятно, класс должен быть абстрактным.

7
ответ дан 6 December 2019 в 08:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: