MyOffice
Должность: Ведущий разработчик
Время работы: 2022-12 → настоящее время…
Технологический стек
- Основной
- C++17
- STL
- Boost
- Python
- TypeScript
- BDD-Testing
- C++17
Проект №1: «Core»
Core – кроссплатформенная монолитная библиотека, содержащая всю необходимую логику обеспечения работы редакторов электронных документов.
Обязанности и зона ответственности:
- code writing
- code review
- участие в планировании разработки
Достижения
Синхронизация формата колонтитулов
Мною была придумана и реализована универсальная схема представления DOM (Document Object Model) элементов, связанных с колонтитулами, не делающая различия между DOCX и ODT типами текстовых документов.
5 уровневая архитектура Core
Мною была придумана, описана и представлена, стратегическая архитектура ядра редакторов.
Проект №2: «Core Test Framework» (текущий)
Core Test Framework (CTF) – внутренний проект, предназначенный для автоматизации процесса тестирования редакторов электронных документов через BDD.
Моё участие в проекте:
- определяю стратегический и тактический технические планы развития проекта
- code writing
- code review
Обязанности и зона ответственности:
- несу ответственность за архитектурную, функциональную и техническую составляющие
- различные сопутствующие исследования
Достижения
Внедрение концепции NSE(A) Navigate-Select-Edit(-Assert)
В какой-то момент, мною было замечено, что всей действия с DOM моделью любого документа описываются через 3(4) ступенчатый процесс: Navigate → Select → Edit (→ Assert).
На этом предположении был написан универсальный модуль навигации и также сформулирована финальная концепция NSE(A), которая регламентирует подход к разработке CTF.
Разработка на основе NSE(A) 4-уровневой архитектуры CTF
На основании NSE(A) мною была разработана и внедрена 4 уровневая модульная архитектура для проекта CTF, выделяющаяся следующими характеристиками:
- бесконечное горизонтальное масштабирование в пределах одно уровня;
- толерантность к ошибкам разработчиков на уровне реализации конкретного API;
- версионирование и обратная совместимость из коробки.
Создание нового паттерна проектирования MinimalAPI в проект CTF
В какой-то момент, совокупный опыт создания API, позволил мне заметить, выделить и сформулировать новый паттерн проектирования API, который я назвал MinimalAPI:
MinimalAPI - это паттерн проектирования API для взаимодействия между подключаемыми библиотеками, основанный на 2 следующих принципах:
- все API-методы имеют общую для всех сигнатуру:
ReturnValue apiMethodName(InputArguments)- все внешние потребители API взаимодействуют с API через 3-ой handlers:
ReturnValueHandler CallAPI(libraryInstanceHandler, apiMethodName (STR|INT), InputArgumentsHandler: INT)
Его использование оказалось крайне удачным на практике в виду простоты масштабирования и документирования.