16 Повторное использование кода: не изобретая колесо

16 Повторное использование кода: не изобретая колесо

Когда великий человек воздерживается от действий, его сила чувствуется за тысячу миль.

—Тао Ти Чинг (популярный неправильный перевод)

Нежелание выполнять ненужную работу считается великой добродетелью у программистов. Если бы китайский мудрец JIao-Цзы в наши дни все еще продолжал проповедовать учение Тао, то, возможно, его высказывание ошибочно переводили бы так: когда великий программист воздерживается от кодирования, то его сила чувствуется за тысячу миль. Действительно, современные переводчики предположили, что китайское понятие ву-вей, которое обычно передавалось словами "бездействие" или "воздержание от действия", вероятно, должно читаться как "наименьшее действие" или "наиболее эффективное действие", или как "действие в соответствии с естественным правом", что даже лучше описывает хорошую инженерную практику.

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

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

Генри Спенсер.

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

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

Эффективность повторного использования кода является одной из великих непреходящих истин в разработке программного обеспечения. Однако многие разработчики, входящие в Unix-сообщество, имея базовый опыт в других операционных системах, не научились (или разучились) систематическому повторному использованию кода. Потери времени и двойная работа являются обычными, даже несмотря на то, что это противоречит интересам тех, кто платит за код, и тех, кто его производит. Осознав, почему такое неправильное поведение сохраняется, разработчик делает первый шаг к его изменению.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Использование фрагментов программного кода C#

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Использование фрагментов программного кода C# Перед использованием TextPad следует упомянуть еще об одном бесплатном расширений, которое вы можете установить. Перейдите на страницу http://www.textpad.com/add-ons/cliplibs.html и загрузите файл csharp_l.zip с библиотекой фрагментов C#, которую


16 Повторное использование кода: не изобретая колесо

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

16 Повторное использование кода: не изобретая колесо Когда великий человек воздерживается от действий, его сила чувствуется за тысячу миль. —Тао Ти Чинг (популярный неправильный перевод) Нежелание выполнять ненужную работу считается великой добродетелью у


7.4. Повторное использование

Из книги Объектно-ориентированный анализ и проектирование с примерами приложений на С++ автора Буч Гради

7.4. Повторное использование Элементы повторного использования Любой программный продукт (текст программы, архитектура, сценарий или документация) может быть использован повторно. Как сказано в главе 3, в объектно-ориентированных языках программирования первичным


Повторное использование (Reusability)

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Повторное использование (Reusability) Определение: повторное использованиеПовторное использование есть способность элементов ПО служить для построения многих различных приложений. Необходимость и возможность повторного использования возникает из наблюдений сходства


Повторное использование персонала

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

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


Повторное использование проектов и спецификаций

Из книги Программирование КПК и смартфонов на .NET Compact Framework автора Климов Александр П.

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


Повторное использование исходного текста

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

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


Повторное использование абстрактных модулей

Из книги CSS3 для веб-дизайнеров автора Сидерхолм Дэн

Повторное использование абстрактных модулей Все предыдущие подходы, несмотря на их ограниченную применимость, осветили важные аспекты проблемы повторного использования:[x]. Повторное использование персонала необходимо, но недостаточно. Наилучшие повторно


Повторное использование памяти в трех режимах

Из книги Домены. Все, что нужно знать о ключевом элементе Интернета автора Венедюхин Александр

Повторное использование памяти в трех режимах Для объектов, созданных как в основанном на стеке режиме, так и в динамическом режиме, возникает вопрос, что делать с неиспользуемыми объектами? Возможно ли память, занятую таким объектом, повторно использовать в более


Интерфейс и повторное использование реализаций

Из книги автора

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


3.6. Повторное использование идентификаторов

Из книги автора

3.6. Повторное использование идентификаторов Структура ipc_perm (раздел 3.3) содержит переменную seq, в которой хранится порядковый номер канала. Эта переменная представляет собой счетчик, заводимый ядром для каждого объекта IPC в системе. При удалении объекта IPC номер канала


Глава 13 Использование неуправляемого кода

Из книги автора

Глава 13 Использование неуправляемого кода Несмотря на то что библиотека .NET Compact Framework имеет множество классов для выполнения самых разных задач, во многих случаях приходится прибегать к вызовам функций Windows API. А в некоторых случаях использование функций Windows API даже


Пример 6-2. Использование символа ! для логической инверсии кода возврата

Из книги автора

Пример 6-2. Использование символа ! для логической инверсии кода возврата true # встроенная команда "true".echo "код возврата команды "true" = $?" # 0! trueecho "код возврата команды "! true" = $?" # 1# Обратите внимание: символ "!" от команды необходимо отделять пробелом.# !true вызовет сообщение


Повторное использование анимации для кнопки в состоянии hover

Из книги автора

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


Глава 9 Колесо Сансары, или Жизнь и смерть доменов

Из книги автора

Глава 9 Колесо Сансары, или Жизнь и смерть доменов У всякого домена второго уровня есть жизненный цикл: домен появляется в системе DNS, под этим доменом размещаются ресурсы, используемые читателями сайтов и посетителями сервисов; потом интернет-ресурс, связанный с доменом,