Обсуждение статьи "Разработка MQTT-клиента для MetaTrader 5: методология TDD (Часть 6)"

 

Опубликована статья Разработка MQTT-клиента для MetaTrader 5: методология TDD (Часть 6):

Статья является шестой частью серии, описывающей этапы разработки нативного MQL5-клиента для протокола MQTT 5.0. В этой части я опишу основные изменения в нашем первом рефакторинге, получение рабочего проекта наших классов построения пакетов, создание пакетов PUBLISH и PUBACK, а также семантику кодов причин PUBACK.

Методология разработки через тестирование (Test-Driven Development, TDD) дает множество преимуществ и имеет один существенный недостаток. Она помогает нам писать четко определенные модули и правильно названные переменные, чтобы добиться высокого охвата тестами, лучше понять предметную область, избежать чрезмерного усложнения и сосредоточиться на поставленной задаче. Главный недостаток является прямым следствием такой узкой фокусировки на поставленной задаче - чтобы не пугаться общей сложности проекта, мы, как разработчики, продолжаем решать минимально возможную задачу за раз. Если гений — это человек, который устраняет сложность путем ее решения, то разработчик TDD — это человек, который намеренно игнорирует сложность. 

Его можно сравнить с лошадью в шорах или с ослом, который гонится за морковкой.

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

Типичные этапы TDD: красный, зеленый, рефакторинг

Рис. 01. Типичные этапы TDD: красный, зеленый, рефакторинг (источник: IBM Developer)

Автор: Jocimar Lopes