Скотт Мейерс - Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ
- Правило 1: Относитесь к C++ как к конгломерату языков.
- Правило 2: Предпочитайте const, enum и inline использованию #define.
- Правило 3: Везде, где только можно используйте const
- Правило 4: Прежде чем использовать объекты, убедитесь, что они инициализированы
- Правило 5: Какие функции C++ создает и вызывает молча
- Правило 6: Явно запрещайте компилятору генерировать функции, которые вам не нужны
- Правило 7: Объявляйте деструкторы виртуальными в полиморфном базовом классе
- Правило 8: Не позволяйте исключениям покидать деструкторы
- Правило 9: Никогда не вызывайте виртуальные функции в конструкторе или деструкторе
- Правило 10: Операторы присваивания должны возвращать ссылку на *this
- Правило 11: В operator= осуществляйте проверку на присваивание самому себе
- Правило 12: Копируйте все части объекта
- Правило 13: Используйте объекты для управления ресурсами
- Правило 14: Тщательно продумывайте поведение при копировании классов, управляющих ресурсами
- Правило 15: Предоставляйте доступ к самим ресурсам из управляющих ими классов
- Правило 16: Используйте одинаковые формы new и delete
- Правило 17: Помещение в «интеллектуальный» указатель объекта, вьщеленного с помощью new, лучше располагать в отдельном предложении
- Правило 18: Проектируйте интерфейсы так, что их легко было использовать правильно и трудно – неправильно
- Правило 19: Рассматривайте проектирование класса как проектирование типа
- Правило 20: Предпочитайте передачу по ссылке на const передаче по значению
- Правило 21: Не пытайтесь вернуть ссылку, когда должны вернуть объект
- Правило 22: Объявляйте данные-члены закрытыми
- Правило 23: Предпочитайте функциям-членам функции, не являющиеся ни членами, ни друзьями класса
- Правило 24: Объявляйте функции, не являющиеся членами, когда преобразование типов должно быть применимо ко всем параметрам
- Правило 25: Подумайте о поддержке функции swap, не возбуждающей исключений
- Правило 26: Откладывайте определение переменных насколько возможно
- Правило 27: Не злоупотребляйте приведением типов
- Правило 28: Избегайте возвращения «дескрипторов» внутренних данных
- Правило 29: Стремитесь, чтобы программа была безопасна относительно исключений
- Правило 30: Тщательно обдумывайте использование встроенных функций
- Правило 31: Уменьшайте зависимости файлов при компиляции
- Правило 32: Используйте открытое наследование для моделирования отношения «является»
- Правило 33: Не скрывайте унаследованные имена
- Правило 34: Различайте наследование интерфейса и наследование реализации
- Правило 35: Рассмотрите альтернативы виртуальным функциям
- Правило 36: Никогда не переопределяйте наследуемые невиртуальные функции
- Правило 37: Никогда не переопределяйте наследуемое значение аргумента функции по умолчанию
- Правило 38: Моделируйте отношение «содержит» или «реализуется посредством» с помощью композиции
- Правило 39: Продумывайте подход к использованию закрытого наследования
- Правило 40: Продумывайте подход к использованию множественного наследования
- Правило 41: Разберитесь в том, что такое неявные интерфейсы и полиморфизм на этапе компиляции
- Правило 42: Усвойте оба значения ключевого слова typename
- Правило 43: Необходимо знать, как обращаться к именам в шаблонных базовых классах
- Правило 44: Размещайте независимый от параметров код вне шаблонов
- Правило 45: Разрабатывайте шаблоны функций-членов так, чтобы они принимали «все совместимые типы»
- Правило 46: Определяйте внутри шаблонов функции, не являющиеся членами, когда желательны преобразования типа
- Правило 47: Используйте классы-характеристики для предоставления информации о типах
- Правило 48: Изучите метапрограммирование шаблонов
- Правило 49: Разберитесь в поведении обработчика new
- Правило 50: Когда имеет смысл заменять new и delete
- Правило 51: Придерживайтесь принятых соглашений при написании new и delete
- Правило 52: Если вы написали оператор new с размещением, напишите и соответствующий оператор delete
- Правило 53: Обращайте внимание на предупреждения компилятора
- Правило 54: Ознакомьтесь со стандартной библиотекой, включая TR1
- Правило 55: Познакомьтесь с Boost
|