Сегодня на очереди очередная глава "Чистого кода" Роберта Мартина. В этот раз речь пойдет о работе со сторонним API и основных принципах его интеграции в свой проект.
Границы
- В большинстве случаев мы не можем контролировать весь код нашего проекта. Чтобы ускорить разработку, нам приходится использовать открытый код, покупать пакеты сторонних разработчиков. Возможно, некоторые модули разрабатываются другими командами нашей же компании.
- Поставщик таких решений стремится к универсальности, чтобы их продукт работал в разных средах. Пользователю в первую очередь нужно исполнение конкретных задач.
- Одним из возможных сложностей, появляющихся из этого противоречия, может стать предоставление пользователю большего функционала или полномочий, чем мы изначально хотели.
- Кроме того, обращаться к стороннему коду (даже одному и тому же модулю) мы скорее всгео будем не в единственном месте нашего проекта. Если вставлять его "как есть", то при смене поставщика придется менять свой код во множестве мест.
- Поэтому взаимодействие со сторонним кодом необходимо ограничивать внутри отдельных классов, создавая интерфейс для обращения к коду на своей стороне. Начать создавать такой интерфейс можно еще до выбора/готовности модуля, опираясь на те функции/информацию, которую мы в дальнейшем ждем от модуля.
- Оптимальным началом для интегрирования стороннего кода будет написание тестов, проверяющих наше понимание стороннего кода. "Учебные тесты" позволяют определить в каких моментах наше понимание расходится с действительностью и с какой главы лучше начать читать документацию) Кроме того, при смене версии сократится объем необходимых действий с нашей стороны, т.к. основные проверки будут уже написаны
Пока что для иллюстрирования каких-то моментов буду использовать такой псевдо-код. Мозги в процессе тотальной перестройки и объяснять все еще проще словами и образами чем чистым кодом.
IT рынок быстро меняется. Ситуация при которой вы выстроили архитектуру вокруг решения, которое другая компания считает своим MVP и может свернуть через пол или даже полтора года будет крайне неприятной для всех, если сервис "пустил корни" в ваше решение. Надеюсь эта заметка позволит предотвратить такие ситуации, ну или замотивирует большее число людей прочитать первоисточник :)