Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save isatimur/f5b3724ae8dde097c610def1bbfc1821 to your computer and use it in GitHub Desktop.
Save isatimur/f5b3724ae8dde097c610def1bbfc1821 to your computer and use it in GitHub Desktop.
Вопросы по дизайн ревью и код ревью:
- это разделение по пакетам и модульность - а также применение паттернов проектирования - пример Lagom
- тестирование должно соблюдаться с неким порогом покрытия тестов, правильным наименованием теста - сигнатура теста, разделением тестов на интеграционный, unit и функциональный тесты.
- обследование инструментария тестирования для play framework-а - jacoco, selenium, junit4, sonar, checkstyle - очень важный момент это с тестирование Actor-ов
чек стайл - нужно выбрать:
https://stackoverflow.com/questions/16929442/how-to-integrate-checkstyle-and-pmd-into-play-framework-build-scala-file
http://ics-software-engineering.github.io/play-example-quality-assurance/
https://www.quora.com/How-do-I-implement-check-style-set-up-for-play-framework-with-Java
https://blog.thomastoye.be/play-framework-ci-507b9e77d5b3
https://groups.google.com/forum/#!topic/play-framework/1aGhAMmIZyU
- swagger yaml api - http://editor.swagger.io/
- api как в zalando - http://zalando.github.io/restful-api-guidelines/index.html
- github readme for api_docs
- Вот этому следовать можно для модуля авторизации - это про скоупы - http://zalando.github.io/restful-api-guidelines/security/Security.html
- частичка начатого ведения API
=================================
Описание API Tele2. Manifesto.
Основная цель данного проекта - создание понятного всем процесса проектирования
API в DS Tele2 с выхлопом в виде программного интерфейса за который не стыдно.
Следование единым правилам разработки интерфейса должно свести к минимуму разработку
специальных методов для определенного функционала, а соответственно экономить ресурсы команды.
На данном этапе требуется контроль разрабатываемых спецификаций методов на предмет
единообразия, атомарности и другим выбранным всей командой принципов проектирования.
Для этого было предложено использовать процедуру ревью.
Формат представления описания интерфейса был выбран Swagger YAML, однако в текущем варианте использования есть несколько недостатков:
Нет места с единым описанием всех интерфейсов и используемых моделей данных.
Переиспользование моделей требует копипаста или описания их заново.
Сложно контролировать исправление замечаний по спецификации.
Для решения этих проблем предлагаю использовать инструментарий Gitlab. Он позволяет
делать изменения в репозитории (создавать, редактировать файлы, создавать бранчи и мержреквесты прямо из web интерфейса).
Процесс разработки API.
Workflow.
Сбор бизнес требование от заказчика.
Выявление основных сущностей, работа с которыми требуется через API, анализ возможного переиспользования существующих моделей и ресурсов.
Разработка спецификации методов API (или внесение изменений в существующие описания) в соответствии с едиными правилами их проектирования (TODO). Представляет собой изменения в едином YAML файле.
Создание пулреквеста на master (master - актуальное описание API реализованного в develop и одобренного к разработке)
Ревью на предмет соответствия общим требованиям.
Правки по результатам ревью и мерж изменений.
Добавление ссылки на смерженные изменения в ТЗ.
Заведение задачи на разработку, разработка в основном проекте.
Основные принципы.
API не разрабатывается пока изменения спецификации не смержены.
Для мержа спецификации необходим апрув хотя бы двух разработчиков.
Один из них - предполагаемый разработчик, который непосредственно будет реализовывать функционал + один независимый.
Все участники проекта имеют одинаковое представление о правильном проектировании API в соответствии с общими договоренностями.
Любое изменение в спецификации должно находить отражение в изменении кода.
Action Points.
Провести презентацию для аналитиков по работе с Gitlab по предложенному процессу
Подготовить драфт API Guide
Может подумать про внутреннее обучение?
Авторская методика проектирования API.
Понять над каким ресурсом происходит операция (получим url)
Какие операции возможны над ресурсом (поймем какой httpметод нужно использовать)
Какие аттрибуты этой операции и возможные сайд эффекты если они есть (получим тело запроса или query параметры)
===================================
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment