polevoi_cpp_2013_spring_lecture_04
.pdf
Оптимизация
•выбор способа хранения в зависимости от разреженности и размерности
•для разреженных – хранение в упорядоченном виде (поддержание упорядоченности при вставке членов)
23.03.2013 |
31 |
Спецификация ПО
•точное описание работы программы
•корректность – согласованность с некоторой спецификацией
•ошибка – нарушение спецификации
23.03.2013 |
32 |
Методы обработки ошибок
•отсутствие обработки
•глобальный статус
•возвращаемое значение
23.03.2013 |
33 |
Глобальный статус
пример:
int getLastErr(); //< получить статус int setLastErr(); //< установить статус
if (ERR_NO == getLastErr())
{
// Основной поток исполнения программы.
}
else
{
// Обработка ошибочной ситуации.
}
23.03.2013 |
34 |
Возвращаемое значение
пример:
int doJob();
if (ERR_NO == doJob())
{
// Основной поток исполнения программы.
}
else
{
// Обработка ошибочной ситуации.
}
23.03.2013 |
35 |
Сообщения пользователю при возникновению ошибки
•отсутствие внешних проявлений
•протоколирование
•сообщения пользователю
23.03.2013 |
36 |
Защитное программирование
•программа всегда должна работать
•каждая функция защищается как может
•кто сломался, тот и виноват
•дублирование кода проверок
•сложность кода
•безответственное программирование
23.03.2013 |
37 |
Программирование по контракту
•обязанности сторон
–клиент: корректные входные данные
–поставщик: корректная работа и результат
•соблюдение контракта
23.03.2013 |
38 |
Контрактные отношения
• могут быть между частями программы
программа-программа
• не определены с внешней средой
программа-человек программа-внешний мир
23.03.2013 |
39 |
Обработка входных данных
•модули ввода (фильтры)
•гарантия корректности входных данных для обрабатывающих модулей
23.03.2013 |
40 |
