Здесь приводится набор правил, которых вам хорошо бы придерживаться изучая С++. Когда вы станете более опытны, вы можете превратить их в то, что будет подходить для вашего рода деятельности и вашего стиля программирования. Они умышлено сделаны очень простыми, поэтому подробности в них опущены. Не воспринимайте их чересчур буквально. Написание хороших программ требует ума, вкуса и терпения. Вы не собираетесь как следует понять это с самого начала, поэкспериментируйте!
1. Когда вы программируете, вы создаете конкретное представление идей вашего решения некоторой задачи. Пусть структура отражает эти идеи настолько явно, насколько это возможно:
a) Если вы считаете «это» отдельным понятием, сделайте его классом.
b) Если вы считаете «это» отдельным объектом, сделайте его объектом некоторого класса.
c) Если два класса имеют общим нечто существенное, сделайте его базовым классом. Почти все классы в вашей программе будут иметь нечто общее. Заведите (почти) универсальный базовый класс, и разработайте его наиболее тщательно.
2. Когда вы определяете класс, который не реализует некоторый математический объект, вроде матрицы или комплексного числа, или тип низкого уровня, вроде связанного списка, то:
a) Не используйте глобальные данные.
b) Не используйте глобальные функции (не члены).
c) Не используйте открытые данные-члены.
d) Не используйте друзей, кроме как для того, чтобы избежать [a], [b] или [c].
e) Не обращайтесь к данным-членам или другим объектам непосредственно.
f) Не помещайте в класс «поле типа», используйте виртуальные функции.
g) Не используйте inline-функции, кроме как средство существенной оптимизации.