Припущення (англ. Assertion) (варіанти перекладу терміну: твердження, пересвідчення) в програмуванні — конструкція в мові програмування яка описує певне припущення щодо властивостей змінних або стану програми. Це припущення зазвичай повинне бути істинним. Більшість мов програмування використовують ці припущення для перевірки таких коректності даних і виконання, а деякі використовують їх для документування. Якщо припущення не виконується, це може вказувати на наявність помилки в програмі.
Рекомендоване застосування
Припущення та перевірка помилок
Важливо розрізняти помилки алгоритмів програми та помилки, які виникають під час виконання програми:
- Помилка програми є дефектом, має ніколи не виникати.
- Помилка часу виконання програми, цілком імовірно може виникнути будь-коли під час роботи програми.
Припущення не є способом обробки помилок часу виконання. Наприклад, застосування припущень для обробки введених користувачем даних є прикладом поганої розробки.
Ця конструкція може використовуватись для перевірки того, що припущення, зроблене програмістом, залишається вірним і під час роботи програми. Приклад такого застосування наведено в наступному тексті програми на мові Java:
int total = countNumberOfUsers();
if (total % 2 == 0) {
// total парне
} else {
// total не парне
assert(total % 2 == 1);
}
В мові програмування Java, «%» є оператором обчислення залишку від ділення (а не модуля) — у випадку, якщо перший його операнд від'ємний, результат також може бути від'ємним. В цьому прикладі, програміст зробив припущення, що кількість користувачів завжди не від'ємна, і залишок від ділення на 2 завжди дорівнюватиме 0 або 1. Твердження робить це припущення явним — якщо метод countNumberOfUsers поверне від'ємне число, це свідчитиме про дефект програми.
Іноді, твердження ставлять в ті частини коду, які вважаються недосяжними. Наприклад, твердження можуть ставитись в частину default вислову switch в програмах на мовах C, C++, та Java. Про випадки, які програміст навмисно залишив не обробленими, буде одразу повідомлено.
Основною перевагою такого підходу є те, що у випадку, коли помилка таки дійсно виникає, вона виявляється одразу ж, замість того, аби виплисти згодом у геть іншій ділянці коду. Через те, що повідомлення про хибність твердження містить вказівку на місце в коді програми, воно може значно полегшити пошук дефектів без відладки всієї програми.
Джерела інформації
Див. також
Посилання