Сложная архитектура приложения - это норма или косяк программиста?
Я новичок и даже не знаю как называется эта тема и как ее гуглить. Проблема думаю касается любого языка.
Вот пишу я приложения и в какой то момент, добавляя очередную функцию, я вдруг осознаю, что для её добавления мне приходится делать очень много правок в других частях приложения и даже иногда править смежные функции.
Порой это доходит до того, что возникают сложность с добавлением какой либо возможности в приложении.
Небольшой пример в виде псевдокода. Возьмем например React:
<MainComponent>
<Products>
{products.map(item=> return <ProductCard />)}
</Products>
<ButtonGetMoreProducts />
</MainComponent>
В подобном примере кода, каждый компонент <ProductCard /> может содержать какие то колбэки которые меняют состояние родителя/смежных компонентов которые в свою очередь меняют что то еще и всю эту цепочку приходится учитывать при дальнейшей поддержке кода.
Особенно сложно если компоненты получают какие то реляционные данные с сервера которые влияют друг на друга. Я пытаюсь соблюдать атомарность компонентов, но это не помогает.
Вопрос: нормально ли вышеописанное и если нет то как с этим бороться? Что почитать/посмотреть? И как общим словом "обзывается" данная проблема? Как её решаете вы?
Ответы (1 шт):
нормально ли это
все кто вырастают эдак в мидла сталкиваются с этим, та что да, нормально. но вот хорошо ли это, конечно нет.
атомарность не помогает
она расчитана лишь на поддержание вменяемой иерархии тегов и их идентификаторов\классов в проекте, но не более того, потому и не помогает
как это называется
такой цельный проект в котором его компоненты мешают друг друг называется "монолитом"
как бороться
решения в зависимости от стэка и масштаба называются по разному:
сами комппоненты в целом проекте:
- в вебе - микросервисы
- в геймдэве - акторы
- в дэвопс - контейнеры
связующее звено для компонентов:
- sql
- rest api
инструменты во многих яп предназначеные для этого:
- нэймспейсы
- инкапсуляция
как это решаете вы
эм... прям как в анекдоте:
- как вы решили эту проблему?
- мы решили что это не проблема 8-)
// ну а если серьёзно, я этим сейчас просто не занимаюсь