Сообщений 2    Оценка 76        Оценить  
Система Orphus

Эффективное использование C++. 50 рекомендаций по улучшению ваших программ и проектов

Автор: Скотт Мейерс
Издательство: "ДМК", 2000
240 страниц

Материал предоставил: Игорь Сухов
Найти в магазинах


Аннотация
Содержание
Комментарии

ПРИМЕЧАНИЕ
Существует новое издание этой книги

Аннотация

В книге приводятся практические рекомендации по проектированию и программированию на языке C++. Изложены правила, позволяющие программисту сделать выбор между различными методами реализации программы - наследованием и шаблонами, шаблонами и указателями на базовые классы, открытым и закрытым наследованием, закрытым наследованием и вложенными классами, виртуальными и невиртуальными функциями и т.п. Для иллюстрации всех принципов используются новейшие языковые средства из стандарта ISO/ANSI C++ - внутриклассовая инициализация констант, пространства имен и шаблоны-члены класса. Рассматривается стандартная библиотека шаблонов и классы, подобные string и vector.

Содержание

Глава 1. Переход от С к C++

Правило 1. Предпочитайте const и inline использованию #define
Правило 2. Предпочитайте использованию
Правило 3. Предпочитайте new и delete использованию malloc и free
Правило 4. Предпочитайте комментарии в стиле C++

Глава 2. Управление памятью

Правило 5. Используйте одинаковые формы new и delete
Правило 6. Используйте delete в деструкторах для указателей членов
Правило 7. Будьте готовы к нехватке памяти
Правило 8. При написании операторов new и delete придерживайтесь ряда простых правил
Правило 9. Старайтесь не скрывать "нормальную" форму new
Правило 10. Если вы написали оператор new, напишите и оператор delete

Глава 3. Конструкторы, деструкторы и операторы присваивания

Правило 11. Для классов с динамическим выделением памяти объявляйте копирующий конструктор и оператор присваивания
Правило 12. Предпочитайте инициализацию присваиванию в конструкторах
Правило 13. Перечисляйте члены в списке инициализации в порядке их объявления
Правило 14. Убедитесь, что базовые классы меют виртуальные деструкторы
Правило 15. operator= должен возвращать ссылку на *this
Правило 16. В operator= присваивайте значения всем элементам данных
Правило 17. В operator= осуществляйте проверку на присваивание самому себе

Глава 4. Классы и функции: проектирование и объявление

Правило 18. Стремитесь к таким интерфейсам классов, которые будут полными и минимальными
Правило 19. Проводите различие между функциями-членами, функциями, не являющимися членами класса, и дружественными функциями
Правило 20. Избегайте данных в открытом интерфейсе
Правило 21. Везде, где только можно, используйте const
Правило 22. Предпочитайте передачу параметров по ссылке передаче по значению
Правило 23. Не пытайтесь вернуть ссылку, когда вы должны вернуть объект
Правило 24. Тщательно обдумывайте выбор между перегрузкой функции и аргументами по умолчанию
Правило 25. Избегайте перегрузки по указателю и численному типу
Правило 26. Примите меры предосторожности против потенциальной неоднозначности
Правило 27. Явно запрещайте использование нежелательных функций-членов, создаваемых компилятором по умолчанию
Правило 28. Расчленяйте глобальное пространство имен

Глава 5. Классы и функции: реализация

Правило 29. Избегайте возврата "дескрипторов" внутренних данных
Правило 30. Не используйте функции-члены, возвращающие неконстантные указатели или ссылки на члены класса с более ограниченным доступом
Правило 31. Никогда не возвращайте ссылку на локальный объект или разыменованный указатель инициализированный внутри функции посредством new
Правило 32. Откладывайте определение переменных до последнего момента
Правило 33. Тщательно обдумывайте использование встраиваемых функций
Правило 34. Уменьшайте зависимости файлов при компиляции

Глава 6. Наследование и объектно-ориентированное проектирование

Правило 35. Используйте открытое наследование для моделирования отношения "есть разновидность"
Правило 36. Различайте наследование интерфейса и наследование реализации
Правило 37. Никогда не переопределяйте наследуемые невиртуальные функции
Правило 38. Никогда не переопределяйте наследуемое значение аргумента по умолчанию
Правило 39. Избегайте приведения типов вниз по иерархии наследования
Правило 40. Моделируйте отношения "содержит" и "реализуется посредством" с помощью вложения
Правило 41. Различайте наследование и шаблоны
Правило 42. Продумывайте подход к использованию закрытого наследования
Правило 43. Продумывайте подход к использованию множественного наследования
Правило 44. Говорите то, что думаете, понимайте то, что говорите

Глава 7. Другие принципы

Правило 45. Необходимо знать, какие функции неявно создает и вызывает C++
Правило 46. Предпочитайте ошибки во время компиляции ошибкам во время выполнения
Правило 47. Обеспечьте инициализацию нелокальных статических объектов до их использования
Правило 48. Уделяйте внимание предупреждениям компилятора
Правило 49. Ознакомьтесь со стандартной библиотекой
Правило 50. Старайтесь понимать цели C++

Послесловие

Алфавитный указатель

Комментарии

Игорь Сухов

Эта книга - для тех кто хочет повысить свой уровень знания С++ со среднего до хм ... хорошего =) Автор показывает именно ПРАКТИЧЕСКУЮ составляющую языка, демонстрируя изящные приемы использования С++ или предупреждая о 'подводных камнях', которые далеко не очевидны с первого взгляда. Да - С++ язык не из простых - но "кому сейчас легко ?". Так вот цель этой книги - сделать легче именно Вам =)

    Сообщений 2    Оценка 76        Оценить