Как сохранить большой проект SOLID управляемым? - PullRequest
0 голосов
/ 01 октября 2018

Наличие большой массы кода требует каких-то принципов, чтобы сделать его управляемым.SOLID - один из наиболее часто используемых принципов.Даже если он решает проблемы, создается впечатление, что он создает другую.

С большой кодовой базой, следующей за моделью SOLID, резко увеличится количество классов, интерфейсов и инъекций.

Сначала проблема в том, что когда я нахожу объект, не всегда понятно, что я могу сделать с этим объектом или событием, как он используется.

Например, если я хочу отобразить его, обычно я просто набираюобъект и хит точка, и список покажет мне, что я могу сделать с этим объектом.С SOLID был бы другой класс "где-то", который обрабатывает стили отображения.Как мне найти этот класс?Откуда я знаю, что он вообще существует?Ссылки звучат как путь, но они могут показывать более 100 ссылок, и многие из них могут не иметь ничего общего с функциональностью всего класса.

Проблема second (может бытьСОЛНЕЧНАЯ проблема) заключается в том, что при использовании инъекций становится неясно, какой код действительно выполняется во время определенного потока.Инъекции используют интерфейсы, и может быть несколько классов, которые реализуют этот интерфейс.Поэтому, исследуя конкретный поток, и мы сталкиваемся с инъекцией, нам нужно разобраться с тем, какой объект действительно внедряется, чтобы знать, какой код выполняется.В большом коде это может занять много времени, чтобы найти.

Я использую SOLID неправильно или как я могу решить проблемы?

1 Ответ

0 голосов
/ 01 октября 2018

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

Модули / Сервисы должны взаимодействовать, но они не должны быть связаны.Чем больше частей разъединено, тем больше это стоит вам (время / усилие).Первый вопрос состоит в том, насколько вы заинтересованы в действительно сильном приложении SOLID и какую выгоду вы получаете от его реализации.

В любом случае, когда вы говорите:

Ссылки звучат так, какидти, но он может показать более 100 ссылок, и многие из них могут не иметь ничего общего с функциональностью класса.

Это кажется в отличие от принципа I: Интерфейспринцип сегрегации

Поскольку у вас должны быть более конкретные, меньшие интерфейсы вместо толстых интерфейсов.Но наверняка возможно, что у вас будет больше вложенных вызовов (например, взаимодействующих сервисов через интерфейсы)

Вы также вторая проблема:

Так что при исследовании конкретногопоток и мы сталкиваемся с инъекцией, нам нужно разобраться с тем, какой объект действительно внедряется, чтобы знать, какой код выполняется

Кажется, что это связано с проблемой 1. Потому что с меньшим и более конкретным интерфейсом и специфическимпоток, вы должны понимать соответствующий код, и он должен быть понятнее, чем не твердое приложение

...