Преимущества использования функций
Разбивая программы на функции получаем:
- Более простой код. Разбитый на функции код программы проще и легче для понимания. Несколько небольших функций намного легче читать, чем одну длинную последовательность инструкций;
- Повторное использование кода. Функции позволяют избежать многократного повторения кода в программе. Если какая-то операция в программе выполняется в нескольких местах, то можно один раз написать для нее функцию и затем исполнять ее, когда понадобится.
- Более простое тестирование. Когда каждая задача в программе содержится в собственной функции, программисты могут индивидуально протестировать каждую функцию и определить, выполняет ли она свою задачу правильно.
- Более быстрая разработка. Предположим, что программист или команда программистов разрабатывает много программ. Они обнаруживают общие задачи у разных программ, например выяснение имени пользователя и пароля, вывод текущего времени. Каждый раз писать программный код для этих задач не имеет смысла. Для часто встречающихся задач пишут функции, и включают в состав любой нуждающейся в них программы.
- Упрощение командной работы. Когда программа разрабатывается как набор функций, разным программистам можно поручить написание отдельных функций.
Что выделять в функции?
В функцию можно выделить любой законченный фрагмент программы. Можно ориентироваться на рекомендации:
- Когда несколько раз пишете в программе одну и ту же последовательность команд, необходимость введения функции приобретает характер острой внутренней потребности;
- Иногда обилие мелочей заслоняет главное и полезно убрать в функцию подробности, скрывающие смысл основной программы;
- Полезно разбить длинную программу на составные части, как книгу разбивают на главы, при этом основная программа становится похожей на оглавление;
- Сложные частные алгоритмы бывает полезно отладить отдельно в небольших тестирующих программах. Включить их в основную программу будет легко, если они оформлены в виде функций. Например, функций сортировок;
- Сделанное хорошо в одной программе, хочется перенести в новые. Для повторного использования лучше сразу выделять в программе полезные алгоритмы в отдельные функции, а функции собирать в пакеты.