Бьерн Страуструп - Язык программирования С++. Вступление, глава 1
Страница 12. Несколько полезных советов


 

                       Несколько полезных советов

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

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

 
« Предыдущая статья   Следующая статья »