Припущення (програмування)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Припущення (англ. Assertion) (варіанти перекладу терміну: твердження, пересвідчення) в програмуванні — конструкція в мові програмування яка описує певне припущення щодо властивостей змінних або стану програми. Це припущення зазвичай повинне бути істинним. Більшість мов програмування використовують ці припущення для перевірки таких коректності даних і виконання, а деякі використовують їх для документування. Якщо припущення не виконується, це може вказувати на наявність помилки в програмі.

Рекомендоване застосування[ред.ред. код]

Припущення та перевірка помилок[ред.ред. код]

Важливо розрізняти помилки алгоритмів програми та помилки, які виникають під час виконання програми:

  1. Помилка програми є дефектом, має ніколи не виникати.
  2. Помилка часу виконання програми, цілком імовірно може виникнути будь-коли під час роботи програми.

Припущення не є способом обробки помилок часу виконання. Наприклад, застосування припущень для обробки введених користувачем даних є прикладом поганої розробки.

Ця конструкція може використовуватись для перевірки того, що припущення, зроблене програмістом, залишається вірним і під час роботи програми. Приклад такого застосування наведено в наступному тексті програми на мові 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. Про випадки, які програміст навмисно залишив не обробленими, буде одразу повідомлено.

Основною перевагою такого підходу є те, що у випадку, коли помилка таки дійсно виникає, вона виявляється одразу ж, замість того, аби виплисти згодом у геть іншій ділянці коду. Через те, що повідомлення про хибність твердження містить вказівку на місце в коді програми, воно може значно полегшити пошук дефектів без відладки всієї програми.

Джерела інформації[ред.ред. код]

Див. також[ред.ред. код]

Посилання[ред.ред. код]