Некоторые комментарии к посту, предлагающие ознакомиться с рекомендациями Google C ++. Подробное обсуждение некоторых аспектов этих рекомендаций размещено по адресу comp.lang.c ++. Moderated .
Некоторые странные или противоречивые моменты включают:
Мы не верим, что доступные
альтернативы исключениям, таким как
коды ошибок и утверждений, ввести
значительное бремя.
Как будто утверждения являются жизнеспособной альтернативой ... Утверждения обычно предназначены для ошибок программирования и ситуаций, которые никогда не должны возникать, в то время как исключения могут происходить (несколько ожидаются) в потоке выполнения.
Справочные аргументы: все параметры
переданный по ссылке должен быть помечен
Уст. ... На самом деле это очень сильный
соглашение, что входные аргументы
значения или константные ссылки в то время как
выходные аргументы являются указателями.
Без комментариев, по поводу фразы ласка очень сильное соглашение .
Выполнение работы в конструкторах: делать только
тривиальная инициализация в
конструктор. Если это вообще возможно, используйте
метод Init () для нетривиального
инициализация. ... если ваш объект
требует нетривиальной инициализации,
рассмотреть возможность явного Init ()
метод и / или добавление флага члена
указывает, был ли объект
успешно инициализирован.
Да ... 2-фазный init для упрощения ... Что если у меня есть const
поля? Это правило, вероятно, является следствием отношения к исключениям.
Использовать потоки только для регистрации
Какие потоки? IOStreams, стандартные потоки C, другие?
С одной стороны, они советуют использовать макросы только в исключительных ситуациях, а рекомендуют использовать DISALLOW_COPY_AND_ASSIGN, чтобы запретить копирование / назначение. Они могли бы посоветовать подход с помощью специального класса (как в Boost)
Не перегружайте операторы, за исключением редких особых случаев.
А как насчет присваивания или арифметических операторов для числовых вычислений и т. Д.?
Параметры по умолчанию сложнее поддерживать, потому что копирование и
Вставка из предыдущего кода может не раскрыть все параметры. Копировать-and
вставка сегментов кода может вызвать серьезные проблемы, когда по умолчанию
аргументы не подходят для нового кода.
Что? Копировать / вставить из предыдущего кода?
Помните , что чтение любого из руководств может привести к уклону в вашем образе мышления. И иногда это не будет полезно для вас или вашего кода. Я согласен с некоторыми другими постами, советующими заранее прочитать хорошие книги хороших авторов. Когда у вас будет достаточно знаний , вы сможете легко изучить руководящие принципы и найти хорошие и слабые стороны, не создавая беспорядка в мозге;)