Абстракции vs. привязка к технологии

Считайте это продолжением “От слоистой архитектуры к DDD”. Я ищу компромисс.

Контекст. В простой монолитной архитектуре(слоистой, линейной, etc.) привязка к конкретному стеку гораздо сильнее, чем в архитектуре, напичканной абстракциями. Например, у ва…


This content originally appeared on DEV Community and was authored by dmkjfs

Считайте это продолжением "От слоистой архитектуры к DDD". Я ищу компромисс.

Контекст. В простой монолитной архитектуре(слоистой, линейной, etc.) привязка к конкретному стеку гораздо сильнее, чем в архитектуре, напичканной абстракциями. Например, у вас есть какой-то интерфейс для чего-то. В первом случае он просто существует сам по себе и просто используется, где надо. Во втором случае у него будет какая-нибудь абстракция, с которой вы будете работать везде, где понадобится этот интерфейс. Вот эти два способа я и сравниваю.

Плюсы и минусы использования объектов без абстракций:
+ быстро пишутся с нуля
+ проще читаются
- сложнее расширяются

При использовании абстракций, соответственно, всё наоборот. Это довольно общепринятая вещь, но я в ней начал сомневаться. Думаю я примерно о таком:

1️⃣ Абстракция означает только явное указание свойств объекта. Неявно они существуют в любом случае. Представим, что в неком приложении есть объект с неким свойством, которое используется в другом месте. Получается, объект должен им обладать, иначе его нельзя вызвать. Можно, конечно, прописать абстракцию, которая будет обозначать наличие этого свойства, но и без этого оно необходимо, потому что используется.

2️⃣ Такие абстракции часто подгоняются под свои реализации, хотя и кажется, что они универсальны.

3️⃣ Для медленных языков программирования: добавляются проблемы. Например, в питоне создание ещё одного класса с абстракцией может ощутимо замедлить работу приложения.

4️⃣ Для модульного монолита/микросервисов: каждый модуль/сервис почти полностью или полностью изолирован от других модулей/сервисов, то есть нет потребности в сложной архитектуре и куче абстракций внутри каждого модуля, ведь он представляет собой крошечное приложение.

5️⃣ В реальности замена объекта на аналогичный происходит крайне редко. Сложно представить ситуацию, в которой требуется много раз заменить интерфейс для базы данных или для почты.

Напоминаю, всё это относится только к абстракциям для единственного объекта, а не вообще ко всем абстракциям.

Получается, при наличии хорошей документации абстракции такого типа вообще не нужны. Но это вступает в конфликт с хорошей рекомендацией "явное лучше неявного". Или такой рекомендацией всё-таки можно пренебречь в данном контексте (пренебрегаем же мы ей в более простых местах)? Ещё отказ от таких абстракций не нравится моему внутреннему перфекционисту. Короче, я ещё думаю, стоит ли убирать их на практике

P.S. И надо сабнуться на тгк: https://t.me/dmkjfss


This content originally appeared on DEV Community and was authored by dmkjfs


Print Share Comment Cite Upload Translate Updates
APA MLA
" » Абстракции vs. привязка к технологии." dmkjfs | Sciencx - Monday January 13, 2025, https://www.scien.cx/2025/01/13/%d0%b0%d0%b1%d1%81%d1%82%d1%80%d0%b0%d0%ba%d1%86%d0%b8%d0%b8-vs-%d0%bf%d1%80%d0%b8%d0%b2%d1%8f%d0%b7%d0%ba%d0%b0-%d0%ba-%d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8/
HARVARD
dmkjfs | Sciencx Monday January 13, 2025 » Абстракции vs. привязка к технологии., viewed ,<https://www.scien.cx/2025/01/13/%d0%b0%d0%b1%d1%81%d1%82%d1%80%d0%b0%d0%ba%d1%86%d0%b8%d0%b8-vs-%d0%bf%d1%80%d0%b8%d0%b2%d1%8f%d0%b7%d0%ba%d0%b0-%d0%ba-%d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8/>
VANCOUVER
dmkjfs | Sciencx - » Абстракции vs. привязка к технологии. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2025/01/13/%d0%b0%d0%b1%d1%81%d1%82%d1%80%d0%b0%d0%ba%d1%86%d0%b8%d0%b8-vs-%d0%bf%d1%80%d0%b8%d0%b2%d1%8f%d0%b7%d0%ba%d0%b0-%d0%ba-%d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8/
CHICAGO
" » Абстракции vs. привязка к технологии." dmkjfs | Sciencx - Accessed . https://www.scien.cx/2025/01/13/%d0%b0%d0%b1%d1%81%d1%82%d1%80%d0%b0%d0%ba%d1%86%d0%b8%d0%b8-vs-%d0%bf%d1%80%d0%b8%d0%b2%d1%8f%d0%b7%d0%ba%d0%b0-%d0%ba-%d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8/
IEEE
" » Абстракции vs. привязка к технологии." dmkjfs | Sciencx [Online]. Available: https://www.scien.cx/2025/01/13/%d0%b0%d0%b1%d1%81%d1%82%d1%80%d0%b0%d0%ba%d1%86%d0%b8%d0%b8-vs-%d0%bf%d1%80%d0%b8%d0%b2%d1%8f%d0%b7%d0%ba%d0%b0-%d0%ba-%d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8/. [Accessed: ]
rf:citation
» Абстракции vs. привязка к технологии | dmkjfs | Sciencx | https://www.scien.cx/2025/01/13/%d0%b0%d0%b1%d1%81%d1%82%d1%80%d0%b0%d0%ba%d1%86%d0%b8%d0%b8-vs-%d0%bf%d1%80%d0%b8%d0%b2%d1%8f%d0%b7%d0%ba%d0%b0-%d0%ba-%d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.