пятница, 20 августа 2010 г.

10/97: Внимательно выбирайте инструменты

Это перевод Choose Your Tools with Care. Автор: Giovanni Asproni.

Из "97-ми вещей, которые должен знать каждый программист".

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

Фактически, когда вы делаете выбор, вам нужно иметь ввиду несколько вещей:
  • Различные инструменты могут основываться на различных предположениях о контексте (окружении, модели управления, модели данных, протоколах коммуникации и т.д.), что может привести к нестыковкам в итоговой архитектуре приложения. Такие несоответствия могут приводить к использованию хаков и обходных путей, которые сделают код более сложным, чем это необходимо.
  • Различные инструменты имеют различное время жизни, а обновление любого из них может быть невероятно сложной задачей, потому что новые возможности, изменения дизайна или даже исправления ошибок могут вызвать несовместимость с другими инструментами или уже написанным кодом. Чем больше у вас инструментов, тем хуже может стать проблема.
  • Некоторые инструменты требуют конфигурирования, что иногда может быстро выходить из под контроля. В итоге приложение может выглядеть так, будто оно написано на конфигурационных файлах и нескольких строках на каком-то языке программирования. Сложность настройки может сделать ваше приложение сложным в обслуживании и расширении.
  • Привязка к производителю происходит, когда код сильно зависит от продуктов конкретного производителя и в итоге ограничивается им по нескольким направлениям: управляемости, производительности, возможности развиваться, цене и т.д.
  • Если вы планируете использовать бесплатные программы, то вы можете в итоге обнаружить, что они не так уж бесплатны. Вам может понадобится купить коммерческую поддержку и она, вероятнее всего, не будет дешёвой.
  • Лицензии важны, даже для бесплатных программ. К примеру, в некоторых компаниях запрещено использовать программы под лицензией GNU из-за её вирусной природы — т.е. программы, разработанные с использованием GNU-программ, должны распространяться с открытым исходным кодом.
Моя личная стратегия по смягчению этих проблем: начать с малого, используя только инструменты, которые являются абсолютно необходимыми. Обычно на первом этапе идёт речь об удалении необходимости работы с низким уровнем (и его проблем), например, использование библиотек вместо работы с сокетами для сетевых приложений. А потом, при необходимости, мы добавляем еще инструменты. Я также, как правило, изолирую внешние инструменты от моей предметной области с помощью интерфейсов и слоев, так что я могу изменить инструмент, если мне придется это делать, с помощью минимального количества головной боли. Позитивным побочным эффектом такого подхода является то, что я обычно использую в итоге меньше инструментов, чем первоначально прогнозировалось.

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.