⇐ Назад

Оглавление

Предисловие . 8

Благодарности 12
Глава 1. Рождение . 14
1.1. Не используйте имена, заканчивающиеся на -er . 15
1.2. Сделайте один конструктор главным . . . . . . . . . . . . . . . . . . .25
1.3. В конструкторах не должно быть кода 31
Глава 2. Образование . 40
2.1. Инкапсулируйте как можно меньше 40
2.2. Инкапсулируйте хотя бы что-нибудь . 44
2.3. Всегда используйте интерфейсы 47
2.4. Тщательно выбирайте имена методов 51
Строители — это существительные . 53
Манипуляторы — это глаголы 55
Примеры 57
Методы, возвращающие логические значения 58
2.5. Не используйте публичные константы . 60
Привнесение сцепления . 62
Потеря цельности . 63
2.6. Делайте классы неизменяемыми 68
Изменяемость идентичности . 73
Атомарность отказов 74
Временное сцепление 76
Отсутствие побочных эффектов 78
Никаких нулевых (NULL) ссылок . 79
Потокобезопасность 81
Объекты поменьше и попроще 84
2.7. Пишите тесты, а не документацию 88
2.8. Используйте fake-объекты вместо mock-объектов . 91
2.9. Делайте интерфейсы краткими, используйте smart-классы 101
Глава 3. Работа 107
3.1. Предоставляйте менее пяти публичных методов 108
3.2. Не используйте статические методы 109
Объектное мышление против компьютерного 112
Декларативный стиль против императивного 115
Классы-утилиты . 123
Паттерн «Синглтон» . 124
Функциональное программирование 129
Компонуемые декораторы . 130
3.3. Не допускайте аргументов со значением NULL 137
3.4. Будьте лояльным и неизменяемым либо константным . 147
3.5. Никогда не используйте геттеры и сеттеры . 161
Объекты против структур данных 161
Благими намерениями вымощена дорога в ад 165
Все дело в префиксах . 167
3.6. Не используйте оператор new вне вторичных
конструкторов 176
3.7. Избегайте интроспекции и приведения типов . 182
Глава 4. Уход на пенсию 188
4.1. Никогда не возвращайте NULL . 189
Отказывать как можно скорее или как можно
безопаснее? . 192
Альтернативы NULL 194
4.2. Бросайте только проверяемые исключения 197
Не ловите исключения без необходимости . 200
Стройте цепочки исключений . 203
Восстанавливайтесь единожды 205
Используйте аспектно-ориентированное
программирование 207
Достаточно одного типа исключений . . . . . . . . . . . . . . . . .209
4.3. Будьте либо константным, либо абстрактным 215
4.4. Используйте принцип RAII . 220
Эпилог 223

Наверх