You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2018-06-27-example-driven-development-ru.md 5.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. Title: Разработка через создание примеров
  2. Date: 2018-06-27 00:00
  3. Category: News
  4. Slug: example-driven-development
  5. Lang: ru
  6. ![Screenshot][screenshot]
  7. Эта статья описывает то, как создание третьего кросс-платформенного примера
  8. OpenSceneGraph привело нас к разработке через создание примеров.
  9. **ИЗМЕНЕНИЯ ОТ 2018-08**: третий пример был переименован в четвёртый в связи
  10. с причинами, изложенными в [следующей статье][article-2018-august].
  11. **Третий кросс-платформенный пример OpenSceneGraph**
  12. Третий кросс-платформенный пример OpenSceneGraph содержит реализацию
  13. [удалённой отладки, работающей на всех поддерживаемых платформах][osgcpe-03].
  14. Этот пример относится не столько к OpenSceneGraph, сколько к поддержке
  15. различных платформ.
  16. Удалённое взаимодействие ныне предполагает использование HTTP(s) поверх
  17. TCP/IP. Таким образом, первая идея реализации подразумевала встраивание сервера
  18. HTTP в приложение, чтобы клиенты HTTP могли взаимодействовать с этим сервером.
  19. Однако, раздача HTTP на различных платформах имеет свои сложности:
  20. * на десктопах есть межсетевые экраны (firewalls)
  21. * на мобилках есть ограничения по работе фоновых процессов
  22. * веб-браузеры являются клиентами HTTP по дизайну
  23. Эти ограничения подтолкнули нас к созданию посредника между отлаживаемым
  24. приложением и пользовательским интерфейсом отладки.
  25. [Брокер отладки][debug-broker], небольшое приложение Node.js, стало тем самым
  26. посредником. Брокер отладки не имеет внешних зависимостей, поэтому его легко
  27. использовать практически везде. Благодаря тому, что брокер отладки - это
  28. серверное приложение, его достаточно настроить лишь раз и использовать для
  29. любого количества приложений.
  30. И [пользовательский интерфейс отладки][debug-ui],
  31. и [брокер отладки][debug-broker] используют JavaScript, т.к. мы хотели сделать
  32. эти инструменты максимально доступными без предварительной установки. Данное
  33. решение привело нас к реализации инструментов именно для веб-браузеров.
  34. Десктопное приложение потребовало бы дополнительных усилий на установку и
  35. поддержку, что лишь усложнило бы работу с инструментами.
  36. **Разработка через создание примеров**
  37. После создания третьего примера мы осознали важность и достоинства разработки
  38. новых функций вне основного проекта:
  39. * освобождение основного проекта от шума изменений (commit noise)
  40. * публичное освещение новой функции приглашает всех к её изучению, критике и улучшению
  41. Когда мы делимся нашими знаниями:
  42. * мы обязаны создавать документацию, объясняющую происходящее (в том числе для нас самих позже)
  43. * мы обязаны сторониться непродуманных решений, т.к. они повредят нашей репутации
  44. С этого момента все новые функции вроде обработки ввода, загрузки раскладок
  45. Маджонга, кэширования ресурсов и т.п. мы будем сначала реализовывать в виде
  46. примеров. Мы называем этот подход разработкой через создание примеров.
  47. На этом мы заканчиваем описание того, как создание третьего
  48. кросс-платформенного примера OpenSceneGraph привело нас к разработке через
  49. создание примеров.
  50. [screenshot]: {attach}/images/2018-06-27-example-driven-development.png
  51. [article-2018-august]: {filename}/articles/2018-08-21-examples-and-dependencies-ru.md
  52. [osgcpe-03]: https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.RemoteDebugging
  53. [debug-broker]: https://github.com/OGStudio/debug-broker
  54. [debug-ui]: https://github.com/OGStudio/debug-ui