Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Структурное кодирование. Вопрос 4. Функции. Компактность. Правило одной операции. Опасность смешения уровней абстракции. 1) последовательности двух или более операторов




СТРУКТУРНОЕ КОДИРОВАНИЕ

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

Теория структурного кодирования

Структурное кодирование состоит в получения правильной программы из некоторых простых логических структур. Оно базируется на теореме о структурировании, которая утверждает, что любую правильную программу (с одним входом и одним, выходом, без зацикливаний и недостижимых команд) можно написать с использованием только следующих логических структур:

1) последовательности двух или более операторов

2) выбора одного из двух операторов

3) повторения (или управления циклом) оператора, пока выполняется некоторое условие

Применение структурного программирования в значительной степени уменьшает сложность программ.

 

Вопрос 4

Функции. Компактность. Правило одной операции. Опасность смешения уровней абстракции

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

Функции образуют первый уровень структуризации в любой программе.

Компактность

Первое правило: функции должны быть компактными. Второе правило: функции должны быть еще компактнее. Функции должны иметь небольшой размер, порядка 20 строк.

Правило одной операции

ФУНКЦИЯ ДОЛЖНА ВЫПОЛНЯТЬ ТОЛЬКО ОДНУ ОПЕРАЦИЮ. ОНА ДОЛЖНА ВЫПОЛНЯТЬ ЕЕ ХОРОШО. И НИЧЕГО ДРУГОГО ОНА ДЕЛАТЬ НЕ ДОЛЖНА.

Проблема в том, что иногда бывает трудно определить, что же считать «одной операцией».

Если функция выполняет только те действия, которые находятся на одном уровне абстракции под объявленным именем функции, то эта функция выполняет одну операцию.

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

В конце концов, функции пишутся, прежде всего, для разложения более крупной концепции (иначе говоря, имени функции) на последовательность действий на следующем уровне абстракции.

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

Один уровень абстракции на функцию

Чтобы убедиться в том, что функция выполняет «только одну операцию», необходимо проверить, что все команды функции находятся на одном уровне абстракции. Смешение уровней абстракции внутри функции всегда создает путаницу. Не всегда понятно, является ли некоторое выражение важной концепцией или второстепенной подробностью. При их смешении функция постепенно начинает обрастать все большим количеством второстепенных подробностей.

 

 

Вопрос 5

Функции. Правило понижения. Паттерн «Абстрактная фабрика» и использование оператора switch

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

Правило понижения

Код должен читаться как рассказ — сверху вниз. За каждой функцией должны следовать функции следующего уровня абстракции. Это позволяет читать код, последовательно спускаясь по уровням абстракции в ходе чтения списка функций. Такой подход называется «правилом понижения».

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

Чтобы включить начальные и конечные блоки, мы сначала включаем начальные блоки, затем содержимое тестовой страницы, а затем включаем конечные блоки.

- Чтобы включить начальные блоки, мы сначала включаем пакетные начальные блоки, если имеем дело с пакетом тестов, а затем включаем обычные начальные блоки.

- Чтобы включить пакетные начальные блоки, мы ищем в родительской иерархии страницу и добавляем команду include с путем к этой странице.

Паттерн «Абстрактная фабрика» и использование оператора switch

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

Решение проблемы заключается в том, чтобы похоронить команду switch в фундаменте АБСТРАКТНОЙ ФАБРИКИ и никому ее не показывать. Фабрика использует команду switch для создания соответствующих экземпляров потомков, а вызовы функций проходят полиморфную передачу через интерфейс.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...