- •Реферат: Основы написания хорошего кода
- •2011. Основы написания хорошего кода Введение
- •Предварительные условия
- •Предварительные условия, связанные с определением проблемы
- •Метафоры и алгоритмы
- •Предварительные условия, связанные с выработкой требований
- •Конструирование
- •Выбор языка программирования
- •Конвенции программирования
- •Работа в группе
- •Гарантия качества
- •Разработка архитектуры
- •Организация программы: описание системы
- •Избыточная функциональность
- •Купить или создавать самим?
- •Проектирование по
- •1. Существенные и несущественные проблемы.
- •2. Сложность
- •Простота сопровождения
- •Содержание
Предварительные условия, связанные с определением проблемы
Первое предварительное условие, которое нужно выполнить перед конструированием, - ясное формулирование проблемы, которую система должна решать.
Определение проблемы - это просто формулировка сути проблемы без каких-либо намеков на ее возможные решения. Оно может занимать пару страниц, но обязательно должно звучать как проблема. Определение проблемы предшествует выработке детальных требований, которая является более глубоким исследованием проблемы.
Проблему следует формулировать на языке, понятном пользователю, а сама проблема должна быть описана с пользовательской точки зрения. Обычно проблему не следует формулировать в компьютерных терминах, потому, что оптимальным ее решением может оказаться не компьютерная программа.
Исключения из этого правила допустимы, если проблема связана с компьютерами: программы компилируются слишком медленно, или инструменты программирования полны ошибок. В подобных случаях проблему можно сформулировать в компьютерных, привычных для программистов терминах.

Рис.2 - Место определения проблемы в разработке ПО.
Не имея хорошего определения проблемы, можно потратить усилия на решение не той проблемы (см. Рис.2). Разумеется, нужную проблему вы при этом тоже не решите.
Чтобы лучше понять проблему и пути ее решения существуют метафоры.
Метафоры и алгоритмы
Терминология компьютерных наук - одна из самых красочных. В этой области существуют стерильные комнаты с тщательно контролируемой температурой, заполненные вирусами, троянскими конями, червями и др.?
Проведение аналогий часто приводит к важным открытиям. Сравнив не совсем понятное явление с чем-то похожим, но более понятным, вы можете догадаться, как справиться с проблемой. Такое использование метафор называется моделированием.
В целом эффективность моделей объясняется их яркостью и концептуальной целостностью. Модели подсказывают ученым свойства, отношения и перспективные области исследований.
Разработка ПО - относительно молодая область науки. Она еще недостаточно зрелая, чтобы иметь набор стандартных метафор. Поэтому она включает массу второстепенных и противоречивых метафор. От того, насколько хорошо вы понимаете метафоры, зависит и ваше понимание разработки ПО. Метафора, характеризующая разработку ПО, больше похожа на прожектор, чем на дорожную карту. Она не говорит, где найти ответ - она говорит, как его искать. Метафоры не исключают друг друга. Используйте любые метафоры или их комбинации, которые стимулируют ваше мышление или помогают общаться с другими членами группы. Метафора - это скорее эвристический подход, а не алгоритм. Эвристика сообщает вам, как обнаружить команды самостоятельно или, по крайней мере, где их искать. Алгоритм предоставляет вам сами команды. В настоящее время создание алгоритмов - написание программ для электронных вычислительных машин - стало видом человеческой деятельности. Важнейший конструктивный компонент программирования, не зависящий от особенностей синтаксиса языков программирования и специфики функционирования конкретных вычислительных машин, - разработка алгоритма.
Подходы к созданию алгоритмов и требования к ним существенно изменялись в ходе эволюции компьютеров. Первоначально, в эпоху ЭВМ 1 - го и 2-го поколений, когда они были еще мало распространены, машинное время было дорого, а возможности ЭВМ очень скромны (с точки зрения сегодняшних достижений), основным требованием к алгоритму была его узко понимаемая эффективность:
минимальные требования в отношении оперативной памяти компьютера.
минимальное время исполнения (минимальное число операций).
Такой подход в программировании (создании алгоритмов), ориентированный на непосредственно выполняемые компьютером операции, можно назвать операциональным.
С появлением массовых ЭВМ 3-го поколения устаревшая технология программирования оказалась основным фактором, сдерживающим развитие и распространение компьютерных (информационных) технологий, что подтолкнуло ведущие в этой сфере деятельности фирмы, в первую очередь IBM, к разработке новых методологий программирования. Появившийся в начале 1970-х годов новый подход к разработке алгоритмов получил название структурного.
С появлением структурного программирования, описанные выше трудности, были во многом преодолены. В основе технологических принципов структурного программирования лежит утверждение о том, что логическая структура программы может быть выражена комбинацией трех базовых структур: следования, ветвления и цикла.
Структурный подход сыграл огромную роль в программировании и вычислительной технике. С его использованием создан большой запас программного обеспечения, решено множество практически значимых задач. Однако, развитие программирования на этом не остановилось. Сегодня дополняющим структурное программирование, создающим основу для разработки современных аудиовизуаль-программных комплексов стало объектное (иногда говорят объектно-ориентированное) программирование, а противостоящим ему при решении определенных классов задач является декларативное программирование, выраженное двумя разными подходами - функциональным и логическим.
Само структурное программирование, наиболее отчетливо выраженное в языке Паскаль (PASCAL), возникло в ходе развития процедурно-ориентированного подхода, заложенного в исторически первом из языков программирования - Фортране (FORTRAN). Во всех языках этого направления разработчик алгоритма (он же, как правило, и программист) описывает, какими действиями следует реализовать процесс. В основе языков этой группы лежат понятия команд (операторов) и данных. Отдельные группы операторов могут объединяться во вспомогательные алгоритмы (процедуры, подпрограммы).
Процедурно-ориентированное программирование развивается и в другом направлении - так называемого, параллельного программирования. В привычных алгоритмах и программах действия совершаются последовательно одно за другим. Однако, логика решения множества задач вполне допускает одновременное выполнение нескольких операций, что ведет к многократному увеличению эффективности. Реализация параллельных алгоритмов на ЭВМ стала возможной с появлением многопроцессорных компьютеров, в которых специалисты видят будущее вычислительной техники.
