Совершенный код. Второе издание
Совершенный код. Второе издание. Стив Макконнелл. Русская редакция. 2014
Предисловие
Благодарности
Контрольные списки
Часть I Основы разработки ПО
1 Добро пожаловать в мир конструирования ПО!
1.1. Что такое конструирование ПО?
1.2. Почему конструирование ПО так важно?
1.3. Как читать эту книгу
2 Метафоры, позволяющие лучше понять разработку ПО
2.1. Важность метафор
2.2. Как использовать метафоры?
2.3. Популярные метафоры, характеризующие разработку ПО
3 Семь раз отмерь, один раз отрежь: предварительные условия
3.1. Важность выполнения предварительных условий
Стоимость исправления ошибок зависит от времени их обнаружения
3.2. Определите тип ПО, над которым вы работаете
3.3. Предварительные условия, связанные с определением проблемы
3.4. Предварительные условия, связанные с выработкой требований
3.5. Предварительные условия, связанные с разработкой архитектуры
3.6. Сколько времени следует посвятить выполнению предварительных условий?
4 Основные решения, которые приходится принимать при конструировании
4.1. Выбор языка программирования
4.2. Конвенции программирования
4.3. Волны развития технологий
4.4. Выбор основных методик конструирования
Часть II Высококачественный код
5 Проектирование при конструировании
5.1. Проблемы, связанные с проектированием ПО
5.2. Основные концепции проектирования
5.3. Компоненты проектирования: эвристические принципы
5.4. Методики проектирования
5.5. Комментарии по поводу популярных методологий
6 Классы
6.1. Основы классов: абстрактные типы данных
6.2. Качественные интерфейсы классов
6.3. Вопросы проектирования и реализации
6.4. Разумные причины создания классов
6.5. Аспекты, специфические для языков
6.6. Следующий уровень: пакеты классов
7 Высококачественные методы
7.1. Разумные причины создания методов
7.2. Проектирование на уровне методов
7.3. Удачные имена методов
7.4. Насколько объемным может быть метод?
7.5. Советы по использованию параметров методов
7.6. Отдельные соображения по использованию функций
7.7. Методы-макросы и встраиваемые методы
8 Защитное программирование
8.1. Защита программы от неправильных входных данных
8.2. Утверждения
8.3. Способы обработки ошибок
8.4. Исключения
8.5. Изоляция повреждений, вызванных ошибками
8.6. Отладочные средства
8.7. Доля защитного программирования в промышленной версии
8.8. Защита от защитного программирования
9 Процесс программирования с псевдокодом
9.1. Этапы создания классов и методов
9.2. Псевдокод для профи
9.3. Конструирование методов с использованием ППП
9.4. Альтернативы ППП
Часть III Переменные
10 Общие принципы использования переменных
10.1. Что вы знаете о данных?
10.2. Грамотное объявление переменных
10.3. Принципы инициализации переменных
10.4. Область видимости
10.5. Персистентность
10.6. Время связывания
10.7. Связь между типами данных и управляющими структурами
10.8. Единственность цели каждой переменной
11 Сила имен переменных
11.1. Общие принципы выбора имен переменных
11.2. Именование конкретных типов данных
11.3. Сила конвенций именования
11.4. Неформальные конвенции именования
11.5. Стандартизованные префиксы
11.6. Грамотное сокращение имен переменных
11.7. Имена, которых следует избегать
Содержание IX
12 Основные типы данных
12.1. Числа в общем
12.2. Целые числа
12.3. Числа с плавающей запятой
12.4. Символы и строки
12.5. Логические переменные
12.6. Перечислимые типы
12.7. Именованные константы
12.8. Массивы
12.9. Создание собственных типов данных (псевдонимы)
13 Нестандартные типы данных
13.1. Структуры
13.2. Указатели
13.3. Глобальные данные
Часть IV Операторы
14 Организация последовательного кода
14.1. Операторы, следующие в определенном порядке
14.2. Операторы, следующие в произвольном порядке
15 Условные операторы
15.1. Операторы if
15.2. Операторы case
Оператор case: вариант по умолчанию для выявления ошибок
16 Циклы
16.1. Выбор типа цикла
16.2. Управление циклом
16.3. Простое создание цикла — изнутри наружу
16.4. Соответствие между циклами и массивами
17 Нестандартные управляющие структуры
17.1. Множественные возвраты из метода
17.2. Рекурсия
17.3. Оператор goto
17.4. Перспективы нестандартных управляющих структур
18 Табличные методы
18.1. Основные вопросы применения табличных методов
18.2. Таблицы с прямым доступом
18.3. Таблицы с индексированным доступом
18.4. Таблицы со ступенчатым доступом
18.5. Другие примеры табличного поиска
19 Общие вопросы управления
19.1. Логические выражения
19.2. Составные операторы (блоки)
19.3. Пустые выражения
19.4. Укрощение опасно глубокой вложенности
19.5. Основа программирования: структурное программирование
19.6. Управляющие структуры и сложность
Часть V Усовершенствование кода
20 Качество ПО
20.1. Характеристики качества ПО
20.2. Методики повышения качества ПО
20.3. Относительная эффективность методик контроля качества ПО
Стоимость исправления ошибок зависит от времени их обнаружения