logo
Харви Дейтел, Пол Дейтел Как программировать на С++ / 02-Deitel-Стр-115-214

184 Глава 3

Имя-функции — это любой правильно написанный идентификатор. Tun-возвращаемого-значения — это тип данных результата, возвращаемого из функции оператору ее вызова. Тип возвращаемого значения void указывает, что функция не возвращает никакого значения. Компилятор предполагает тип int для неопределенного типа возвращаемого значения.

Типичная ошибка программирования 3.2

Пропуск типа возвращаемого значения в описании функции вызывает синтаксическую ошибку, если прототип функции определяет возвращаемый тип иначе, чем int.

Типичная ошибка программирования 3.3

Если забыть вернуть значение из функции, в которой предполагается возвращение результата, это может привести к неожиданным ошибкам. Описание языка С++ указывает, что результат такой оплошности не определенен. В этом случае обычно компиляторы С++ выдают предупреждающее сообщение.

Типичная ошибка программирования 3.4

Возвращение какого-то значения из функции, для которой тип возвращаемого зна­чения объявлен как void, вызывает синтаксическую ошибку.

Хороший стиль программирования 3.4

Несмотря на то, что пропущенный тип возвращаемого значения по умолчанию int, всегда задавайте тип возвращаемого значения явным образом. Исключением является функция main, для которой тип возвращаемого значения обычно не указывается.

Список-параметров — это список разделенных запятыми объявлений тех параметров, которые получает функция при ее вызове. Если функция не получает никаких значений, список-параметров задается как void. Тип дол­жен быть указан явно для каждого параметра в списке параметров.

Типичная ошибка программирования 3.5

Объявление параметров функции, имеющих одинаковый тип, в виде float x, у вместо float x, float у. Объявление параметра float x, у вызовет ошибку компиляции, так как типы надо указывать для каждого параметра в списке.

Типичная ошибка программирования 3.6

Точка с запятой после правой круглой скобки, закрывающей список параметров в описании функции, является синтаксической ошибкой.

Типичная ошибка программирования 3.7

Повторное определение параметра функции как локальной переменной этой функции является синтаксической ошибкой.

Функции 185

Хороший стиль программирования 3.5

Не используйте одинаковые имена для аргументов, передаваемых в функцию, и соответствующих параметров в описании функции, хотя это и не является ошибкой. Использование разных имен помогает избежать двусмысленности.

Объявления и операторы внутри фигурных скобок образуют тело функ­ции. Тело функции рассматривается как блок. Блок — это просто составной оператор, который включает объявления. Переменные могут быть объявлены в любом блоке, а блоки могут быть вложенными. При любых обстоятель­ствах функция не может быть описана внутри другой функции.

Типичная ошибка программирования 3.8

Описание функции внутри другой функции является синтаксической ошибкой.

Хороший стиль программирования 3.6

Выбор осмысленных имен функций и осмысленных имен параметров делает про­грамму более легко читаемой и помогает избежать излишних комментариев.

Замечание по технике программирования 3.5

Обычно функция должна быть не длиннее одной страницы. Еще лучше, если она будет не длиннее половины страницы. Безотносительно к длине функции она должна хорошо определять только одну задачу. Небольшие функции способствуют повтор­ному использованию программных кодов.

Замечание по технике программирования 3.6

Программа должна быть написана как совокупность небольших функций. Это об­легчает написание, отладку, сопровождение и модификацию программы.

Замечание по технике программирования 3.7

Функция, требующая большого количества параметров, возможно, выполняет слиш­ком много задач. Попробуйте разделить такую функцию на небольшие функции, которые выполняют отдельные задачи. Заголовок функции по возможности не должен занимать более одной строки.

Замечание по технике программирования 3.8

Прототип функции, заголовок функции и вызовы функции должны быть согласованы между собой по количеству, типу и порядку следования аргументов и параметров и по типу возвращаемых результатов.

Существует три способа возврата управления к точке, из которой была вызвана функция. Если функция не должна возвращать результат, управ­ление возвращается или просто при достижении правой фигурной скобки, завершающей функцию, или при выполнении оператора

return;