|
Программирование >> Структурное программирование
3.1. Избегайте повторного изобретения колеса. Если возможно, используйте стандартную библиотеку ANSI С вместо того, чтобы писать новые функции. Это сокращает затраты времени на создание программы. 3.2. В программах, содержащих много функций, main должна быть построена как группа вызовов функций, которые и выполняют основную часть работы. 3.3. Каждая функция должна выполнять одну хорошо определенную задачу и имя функции должно наглядно отражать данную задачу. Это способствует успешному повторному использованию программного обеспечения. 3.4. Если вы не можете выбрать подходящее имя, которое бы выражало суть работы функции, то может быть на нее возложено слишком много различных задач. Обычно лучше разбить такую функцию на несколько более мелких. 3.5. Обычно функция должна быть не длиннее одной страницы. Еще лучше, если она будет не длиннее половины страницы. Безотносительно к длине функции она должна хорошо определять только одну задачу. Небольшие функции способствуют повторному использованию программных кодов. 3.6. Программа должна быть написана как совокупность небольших функций. Это облегчает написание, отладку, сопровождение и модификацию программы. 3.7. Функция, требующая большого количества параметров, возможно, выполняет слишком много задач. Попробуйте разделить такую функцию на небольшие функции, которые выполняют отдельные задачи. Заголовок функции по возможности не должен занимать более одной строки. 3.8. Прототип функции, заголовок функции и вызовы функции должны быть согласованы между собой по количеству, типу и порядку следования аргументов и параметров и по типу возвращаемых результатов. 3.9. В С-Ы- требуются прототипы функций. Используйте директиву препроцессора #include, чтобы получить прототипы стандартных библиотечных функций из заголовочных файлов соответствующих библиотек. Используйте также #include для заголовочных файлов содержащих прототипы функций, используемых вами или членами вашей группы. 3.10. Прототип функции, размещенный вне описания какой-то другой функции, относится ко всем вызовам данной функции, появляющимся после этого прототипа в данном файле. Прототип функции, размещенный внутри описания некоторой функции, относится только к вызовам внутри этой функции. Замечания по технике программирования c) Переменная, которая известна только внутри функции, в которой она определена, называется . d) Оператор в вызываемой функции используется, чтобы передать значение выражения обратно в вызывающую функцию. e) Ключевое слово используется в заголовке функции, чтобы указать, что функция не возвращает значение или указать, что она не содержит параметров. f) идентификатора - это часть программы, в которой идентификатор может быть использован. g) Существуют три пути возвращения управления из вызванной функции в оператор вызова , 3.11. Автоматическое хранение - еще один пример принципа наименьших привилегий. Зачем хранить в памяти и делать доступными переменные, когда они не нужны? 3.12. Объявление переменной глобальной, а не локальной, приводит к неожиданным побочным эффектам, когда функции, не нуждающиеся в доступе к этой переменной, случайно или намеренно изменяют ее. Вообще лучше избегать использования глобальных переменных за исключением особых случаев, когда требуется уникальная производительность (это будет рассмотрено в главе 18). 3.13. Любые задачи, которые можно решить рекурсивно, могут быть решены также и итеративно (нерекурсивно). Обычно рекурсивный подход предпочитают итеративному, если он более естественно отражает задачу и ее результаты, то есть более нагляден и легче отлаживается. Другая причина предпочтения рекурсивного решения состоит в том, что итеративное решение может не быть очевидным. 3.14. Функционализация программ в четком иерархическом стиле - свидетельство хорошей техники программирования. Но за все надо платить. 3.15. Любые изменения функции inline могут потребовать перекомпиляции всех потребителей этой функции. Это может оказаться существенным моментом для развития и поддержки некоторых программ. 3.16. Чтобы обеспечить одновременно ясность программы и ее производительность, многие программисты на С-1-f- предпочитают, чтобы аргументы, которые могут изменяться, передавались бы функциям с помощью указателей, аргументы, не предназначенные для изменения, передавались бы по значению, а большие неизменяемые аргументы передавались бы функциям путем использования константных ссылок. Упражнения для самопроверки 3.1. Заполнить пробелы в следующих утверждениях: a) Программные модули на С++ называются и . b) Функция активируется с помощью . h) позволяет компилятору проверить количество, типы и порядок следования аргументов, передаваемых функции. i) Функция используется для получения случайных чисел. j) Функция используется, чтобы установить случайное начальное значение числа для рандомизации программы. к) Спецификациями классов памяти являются , , и . 1) Переменные, объявленные в блоке или в списке параметров функции, имеют класс памяти , если не указано иное. т) Спецификация класса памяти представляет собой рекомендацию компилятору хранить переменную в одном из регистров компьютера. п) Переменная, объявленная вне любого блока или функции, является переменной. о) Для того, чтобы локальная переменная функции сохраняла свое значение между вызовами функции, она должна быть объявлена как имеюшая класс памяти . р) Четырьмя возможными областями действия идентификатора являются , , и . q) Функция, которая прямо или косвенно вызывает сама себя, называется функцией. г) Рекурсивная функция обычно имеет два компонента: один, который обеспечивает завершение рекурсии проверкой, не является ли задача , и другой, который представляет задачу как рекурсивный вызов упрощенной по сравнению с исходной задачи. s) В С-Н- можно иметь разные функции с одинаковым именем, каждая из которых оперирует с различными типами и (или) количеством аргументов. Такая функция называется . t) предоставляет возможность доступа к глобальной переменной с тем же именем, что и переменная в текущей области действия. и) Спецификация используется для объявления переменных только для чтения. v) функции предоставляют возможность определить единственную функцию для выполнения заданий с многими различными типами данных. 3.2. Для приведенной ниже программы установите области действия (область действия функция, область действия файл, область действия блок или область действия прототип функции) каждого из следующих элементов: a) Переменная х в main. b) Переменная у в cube. c) Функция cube. d) Функция main.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |