Урок №17. Чому функції корисні і як їх ефективно використовувати в програмуванні?

  Юрій  | 

  Оновл. 7 Чер 2021  | 

 302

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

Навіщо потрібно використовувати функції?

Початківці часто запитують: «А чи можна обходитися без функцій і весь код розміщувати безпосередньо в функції main()?”. Відповідь: “Якщо ваш код складає всього лише 10-20 рядків, то можна. А якщо серйозно, то функції призначені для спрощення коду, а не для його ускладнення”. Вони мають ряд переваг, які роблять їх надзвичайно корисними в нетривіальних програмах.

Переваги функцій:

   Структура. Як тільки програми збільшуються в розмірі/складності, зберігати весь код всередині функції main() стає важко. Функція — це як міні-програма, яку ми можемо записати окремо від головної програми, не заморочуючись при цьому на рахунок інших частин коду. Це дозволяє розбивати складні завдання на більш дрібні і прості, що кардинально знижує загальну складність програми.

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

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

   Модернізація. Коли потрібно внести зміни в програму або розширити її функціонал, то функції є відмінним варіантом. З їх допомогою можна внести зміни в одному місці, щоб вони запрацювали всюди.

   Абстракція. Для того, щоб використовувати функцію, нам потрібно знати її ім’я, місцезнаходження, вхідні та вихідні дані. Нам не потрібно знати, як вона працює. Це дуже корисно для написання коду, зрозумілого іншим (наприклад, Стандартна бібліотека С++ і все, що в ній знаходиться, створене саме за цим принципом).

Кожен раз, при виклику std::cin або std::cout для вводу або виводу даних, ми використовуємо функцію зі Стандартної бібліотеки C++, яка відповідає всім вищезазначеним концепціям.

Ефективне використання функцій

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

   Рекомендація №1: Код, який з’являється більше одного разу в програмі, краще переписати у вигляді функції. Наприклад, якщо ми отримуємо дані від користувача кілька разів одним і тим же способом, то це чудова нагода для написання окремої функції.

   Рекомендація №2: Код, який використовується для сортування будь-чого, краще записати у вигляді окремої функції. Наприклад, якщо у нас є список речей, які потрібно впорядкувати — пишемо функцію сортування, куди передаємо несортований список і звідки отримуємо уже відсортований.

   Рекомендація №3: Функція повинна виконувати одне (і тільки одне) завдання.

   Рекомендація №4: Коли функція стає дуже великою, складною чи незрозумілою — її варто розбити на декілька підфункцій. Це називається рефакторингом коду.

При вивченні C++ вам потрібно буде написати багато програм, які включатимуть наступні три підзавдання:

   Отримання даних від користувача.

   Опрацювання даних.

   Вивід результату на екран.

Для простих програм (менше 30 рядків коду) частково або всі з цих трьох підзавдань можна записати у функції main(). Для більш складних програм (або просто для практики) кожне з цих трьох підзавдань є хорошим варіантом для написання окремої функції.

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

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (6 оцінок, середня: 5,00 з 5)
Loading...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *