IV. Программирование (реализация)
Важнейшая технологическая задача, возникающая в процессе программирования — соответствие единому стилю программирования. Под стилем программирования обычно понимают [Тассел 1985] набор приемов или методов программирования, которые используют опытные программисты, чтобы получить правильные, эффективные, удобные для применения и легкочитаемые программы. Правила хорошего стиля — результат соглашения между опытными программистами. Обычно принципы хорошего стиля программирования являются результатом здравого смысла, исходящего из опыта. Это набор обязательных правил, установленный раз и навсегда. Брайан Керниган и Роб Пайк [Керниган, Пайк 2001] уточняют, что код должен быть прост и понятен, т. е. обладать следующими свойствами:
очевидная логика;
естественные выражения;
использование соглашений, принятых в языке разработки;
осмысленные имена;
аккуратное форматирование;
развернутые комментарии;
отсутствие хитрых трюков и необычных конструкций.
Правило стандартизации стиля заключается в том, что если существует более одного способа сделать что-либо и выбор произвольный, то следует остановиться на одном способе и всегда его придерживаться. Особое значение имеет единый стиль программирования в процессе работы над программным текстом в коллективных разработках. В большинстве крупных проектов существуют внутренние документы, определяющие стиль программирования команды разработчиков. Известным примером является документ по стилю программирования разработокGNU. Применение таких документов приводит к использованию единогостиля, а следовательно, к повышению читабельности и сопровождаемости программ, а во многих случаях и предотвращению большого класса ошибок. Обратим внимание на то, что есть универсальные рекомендации, а есть рекомендации, связанные с конкретными языками.
Защитное программирование
Защитное программирование — это такой стиль написания программ, при котором появляющиеся ошибки легко обнаруживаются и идентифицируются программистом [Тассел 1985].
Существуют три основных принципа защитного программирования.
Общее недоверие. Для каждого модуля входные данные должны тщательноанализироваться в предположении, что они могут быть ошибочными.
Немедленное обнаружение. Каждая ошибка должна быть выявлена как можно раньше, это упрощает установление ее причины.
Изолирование ошибки. Ошибки в одном модуле должны быть изолированы так, чтобы не допустить их влияние на другие модули.
Теперь дадим несколько рекомендаций по защитному программированию [Тассел 1985].
Делайте проверку области значений переменных.
Выполняйте контроль правдоподобности значений переменных, которые не должны превышать некоторых констант или значений других переменных.
Контролируйте итоги вычислений.
Включайте автоматические проверки (например, контроль переполнения или потери точности).
Проверяйте длину элементов информации.
Проверяйте коды возврата функций.
Выбор языка программирования
На выбор языка программирования влияют четыре основных фактора.
Сравнительная пригодность языка программирования для данной задачи.
Избранная методология. Часто говорят, что язык поддерживает ту или иную методологию. Обычно это означает, что применение этого языка совместно с указанной методологией в совокупности дадут значительнобольший эффект.
Степень важности для разработчика многочисленных характеристик и свойств, которые могут быть присущи или не присущи избираемому языку программирования.
Степень знакомства программистов с языком программирования. Результаты исследований говорят о том, что производительность программиста, работавшего на некотором языке более трех лет, возрастает на треть посравнению с программистом такого же уровня, но без опыта работы на данном языке. Исследование специалистов компании IBM показало даже более существенные результаты. Программисты с длительным опытом программирования на некотором языке имеют производительность в три раза большую, чем программисты с минимальным опытом программирования.