Проект программы

Проект

Вычислитель отличий (Python)

В этом проекте отрабатывается работа с коллекциями. Изучаются способы построения и обхода деревьев. Вы познакомитесь с разными форматами данных (JSON, YAML), научитесь их парсить и формировать. Начнете писать тесты (pytest) и освоите разработку через них. Познакомитесь с непрерывной интеграцией (CI) и элементами экстремального программирования (XP)

2-4

недели

Цель

Вычислитель отличий – проект, который прокачивает даже опытных разработчиков. Здесь вам придется столкнуться с принятием сложных архитектурных решений, автоматизированным тестированием и непрерывной интеграцией, функциональным программированием, работе с древовидными структурами данных и рекурсивными алгоритмами.

Структуры данных и алгоритмы

Выбор правильных структур данных в коде – один из ключей к удачной архитектуре и простому коду. От этого зависит удобство анализа и обработки, количество и сложность условных конструкций.

Главный вопрос в проекте: как описать внутреннее представление дифа между файлами, чтобы оно было максимально удобным. И хотя для этого существует множество разных способов, лишь некоторые из них приводят к простому коду.

Работа с деревьями и древовидной рекурсией очень хорошо прокачивает алгоритмическое мышление. Это важно, так как реальная разработка сопряжена с постоянной обработкой данных, различными преобразованиями и выводом коллекций.

Архитектура

Для построения дифа между двумя структурами нужно проделать множество операций: чтение файлов, парсинг входящих данных, построение дерева различий, формирование необходимого вывода. Все это требует хорошей организации кода. Модульность и абстракции выходят в этом проекте на новый уровень.

Помимо внутренней архитектуры в этом проекте появляется необходимость работать с параметрами командной строки. Происходит углубление понимания работы операционных систем в целом и командных интерпретаторов в частности. Для организации этой части кода в Python есть встроенный модуль argparse, который позволяет легко строить консольные утилиты.

Тестирование и Отладка

Автоматизированные тесты — неотъемлемая часть профессиональной разработки. Вычислитель отличий идеальный проект для прокачки навыка тестирования. Он достаточно простой и удобный для написания тестов и достаточно сложный, чтобы прочувствовать важность этих тестов во время рефакторинга и отладки. В отличие от практики Хекслета здесь предстоит писать тесты самостоятельно. Причем это можно делать до кода, практикуя TDD.

Для написания тестов используется фреймворк Pytest.

Описание

Вычислитель отличий – программа, которая определяет разницу между двумя структурами данных. Это популярная задача, для решения которой существует множество онлайн-сервисов, например, jsondiff. Подобный механизм, например, используется при выводе тестов или при автоматическом отслеживании изменений в конфигурационных файлах.

Возможности утилиты:

  • Поддержка разных входных форматов: yaml, json
  • Генерация отчета в виде plain text, stylish и json

Пример использования:

gendiff --format plain filepath1.json filepath2.yml

Setting "common.setting4" was added with value: False
Setting "group1.baz" was updated. From 'bas' to 'bars'
Section "group2" was removed

Вопросы и Ответы

Проекты входят в стоимость обучения на любом плане: самостоятельном, групповом и индивидуальном. Дополнительно платить не нужно.

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845