Title: Разработка через создание примеров Date: 2018-06-27 00:00 Category: News Slug: example-driven-development Lang: ru ![Брокер отладки][screenshot] Эта статья описывает то, как создание третьего кросс-платформенного примера OpenSceneGraph привело нас к разработке через создание примеров. **ИЗМЕНЕНИЯ ОТ 2018-08**: третий пример был переименован в четвёртый в связи с причинами, изложенными в [следующей статье][article-2018-august]. **Третий кросс-платформенный пример OpenSceneGraph** Третий кросс-платформенный пример OpenSceneGraph содержит реализацию [удалённой отладки, работающей на всех поддерживаемых платформах][osgcpe-04]. Этот пример относится не столько к OpenSceneGraph, сколько к поддержке различных платформ. Удалённое взаимодействие ныне предполагает использование HTTP(s) поверх TCP/IP. Таким образом, первая идея реализации подразумевала встраивание сервера HTTP в приложение, чтобы клиенты HTTP могли взаимодействовать с этим сервером. Однако, раздача HTTP на различных платформах имеет свои сложности: * на десктопах есть межсетевые экраны (firewalls) * на мобилках есть ограничения по работе фоновых процессов * веб-браузеры являются клиентами HTTP по дизайну Эти ограничения подтолкнули нас к созданию посредника между отлаживаемым приложением и пользовательским интерфейсом отладки. [Брокер отладки][debug-broker], небольшое приложение Node.js, стало тем самым посредником. Брокер отладки не имеет внешних зависимостей, поэтому его легко использовать практически везде. Благодаря тому, что брокер отладки - это серверное приложение, его достаточно настроить лишь раз и использовать для любого количества приложений. И [пользовательский интерфейс отладки][debug-ui], и [брокер отладки][debug-broker] используют JavaScript, т.к. мы хотели сделать эти инструменты максимально доступными без предварительной установки. Данное решение привело нас к реализации инструментов именно для веб-браузеров. Десктопное приложение потребовало бы дополнительных усилий на установку и поддержку, что лишь усложнило бы работу с инструментами. **Разработка через создание примеров** После создания третьего примера мы осознали важность и достоинства разработки новых функций вне основного проекта: * освобождение основного проекта от шума изменений (commit noise) * публичное освещение новой функции приглашает всех к её изучению, критике и улучшению Когда мы делимся нашими знаниями: * мы обязаны создавать документацию, объясняющую происходящее (в том числе для нас самих позже) * мы обязаны сторониться непродуманных решений, т.к. они повредят нашей репутации С этого момента все новые функции вроде обработки ввода, загрузки раскладок Маджонга, кэширования ресурсов и т.п. мы будем сначала реализовывать в виде примеров. Мы называем этот подход разработкой через создание примеров. На этом мы заканчиваем описание того, как создание третьего кросс-платформенного примера OpenSceneGraph привело нас к разработке через создание примеров. [screenshot]: ../../images/2018-06-27-example-driven-development.png [article-2018-august]: examples-and-dependencies.html [osgcpe-04]: https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/04.RemoteDebugging [debug-broker]: https://github.com/OGStudio/debug-broker [debug-ui]: https://github.com/OGStudio/debug-ui