Files
ogs-site/ru/news/example-driven-development.html

83 lines
8.0 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head>
<link rel="stylesheet" href="../../style.css">
</head>
<body>
<script data-goatcounter="https://services.opengamestudio.org:443/count" async src="//services.opengamestudio.org:443/count.js"></script>
<div id="header">
<div class="header2">
<div class="menu">
<a href="../../ru/news/index.html">Новости</a>
<a href="../../ru/game/index.html">Игры</a>
<a href="../../ru/tool/index.html">Инструменты</a>
<a href="../../ru/page/about.html">О нас</a>
</div>
<div id="lang">
<a href="../../en/news/example-driven-development.html">EN</a>
<a href="../../ru/news/example-driven-development.html">RU</a>
</div>
<div class="clear"></div>
</div>
</div>
<h3 class="left_item_title">В новостях...</h3>
<center>
<div class="news_item">
<h2 class="news_item_title">
<a href="example-driven-development.html">Разработка через создание примеров</a>
</h2>
<p class="news_item_date">
2018-06-27 00:00
</p>
<div class="news_item_contents">
<p><img src="../../images/2018-06-27-example-driven-development.png" alt="Брокер отладки" /></p>
<p>Эта статья описывает то, как создание третьего кросс-платформенного примера OpenSceneGraph привело нас к разработке через создание примеров.</p>
<p><strong>ИЗМЕНЕНИЯ ОТ 2018-08</strong>: третий пример был переименован в четвёртый в связи с причинами, изложенными в <a href="examples-and-dependencies.html">следующей статье</a>.</p>
<p><strong>Третий кросс-платформенный пример OpenSceneGraph</strong></p>
<p>Третий кросс-платформенный пример OpenSceneGraph содержит реализацию <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/04.RemoteDebugging">удалённой отладки, работающей на всех поддерживаемых платформах</a>. Этот пример относится не столько к OpenSceneGraph, сколько к поддержке различных платформ.</p>
<p>Удалённое взаимодействие ныне предполагает использование HTTP(s) поверх TCP/IP. Таким образом, первая идея реализации подразумевала встраивание сервера HTTP в приложение, чтобы клиенты HTTP могли взаимодействовать с этим сервером.</p>
<p>Однако, раздача HTTP на различных платформах имеет свои сложности:</p>
<ul>
<li>на десктопах есть межсетевые экраны (firewalls)</li>
<li>на мобилках есть ограничения по работе фоновых процессов</li>
<li>веб-браузеры являются клиентами HTTP по дизайну</li>
</ul>
<p>Эти ограничения подтолкнули нас к созданию посредника между отлаживаемым приложением и пользовательским интерфейсом отладки. <a href="https://github.com/OGStudio/debug-broker">Брокер отладки</a>, небольшое приложение Node.js, стало тем самым посредником. Брокер отладки не имеет внешних зависимостей, поэтому его легко использовать практически везде. Благодаря тому, что брокер отладки - это серверное приложение, его достаточно настроить лишь раз и использовать для любого количества приложений.</p>
<p>И <a href="https://github.com/OGStudio/debug-ui">пользовательский интерфейс отладки</a>, и <a href="https://github.com/OGStudio/debug-broker">брокер отладки</a> используют JavaScript, т.к. мы хотели сделать эти инструменты максимально доступными без предварительной установки. Данное решение привело нас к реализации инструментов именно для веб-браузеров. Десктопное приложение потребовало бы дополнительных усилий на установку и поддержку, что лишь усложнило бы работу с инструментами.</p>
<p><strong>Разработка через создание примеров</strong></p>
<p>После создания третьего примера мы осознали важность и достоинства разработки новых функций вне основного проекта:</p>
<ul>
<li>освобождение основного проекта от шума изменений (commit noise)</li>
<li>публичное освещение новой функции приглашает всех к её изучению, критике и улучшению</li>
</ul>
<p>Когда мы делимся нашими знаниями:</p>
<ul>
<li>мы обязаны создавать документацию, объясняющую происходящее (в том числе для нас самих позже)</li>
<li>мы обязаны сторониться непродуманных решений, т.к. они повредят нашей репутации</li>
</ul>
<p>С этого момента все новые функции вроде обработки ввода, загрузки раскладок Маджонга, кэширования ресурсов и т.п. мы будем сначала реализовывать в виде примеров. Мы называем этот подход разработкой через создание примеров.</p>
<p>На этом мы заканчиваем описание того, как создание третьего кросс-платформенного примера OpenSceneGraph привело нас к разработке через создание примеров.</p>
</div>
</div>
<div id="disqus_thread"></div>
<script>
var disqus_config = function () {
this.page.url = "https://opengamestudio.org/ru/news/example-driven-development.html";
this.page.identifier = "example-driven-development.html";
};
(function() { // DON'T EDIT BELOW THIS LINE
var d = document, s = d.createElement('script');
s.src = 'https://opengamestudio.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Пожалуйста, включите JavaScript для просмотра <a href="https://disqus.com/?ref_noscript">комментариев на платформе Disqus.</a></noscript>
<div id="footer">
Сайт сгенерирован <a href="http://opengamestudio.org/pskov/ru">ПСКОВОМ</a>
из <a href="http://github.com/ogstudio/site-opengamestudio">этого исходного кода</a>.
</div>
</center>
</body>
</html>