Я занимаюсь линейкой бизнес-приложений, где все остальные разработчики привыкли делать базовые CRUD-приложения или сосредоточены исключительно на создании симпатичных / функциональных интерфейсов, и я получаю много нового.
«С тем, как мы используем это, сотрудник будет иметь все, что вы можете сделать с сотрудником». И это было правдой. Этот «класс» имел тысячи строк кода, и все, что вы могли сделать с сотрудником, было там. Или, что еще хуже, была таблица данных о сотрудниках, и каждый разработчик выяснил, как делать то, что он хотел, в обработчике событий.
Все плохое в этом подходе было правдой, но, по крайней мере, разработчик, использующий сотрудника, мог, не обращаясь к другим документам, выяснить, как зарегистрировать сотрудника в плане медицинского обслуживания, повысить зарплату, уволить, нанять, перевести и т. Д. для менеджера и всех других основных идей. Или, если они использовали сотрудника для других необходимых таблиц данных, они могли просто делать то, что хотели.
Да, было много дублированного кода. Да, это был очень хрупкий код. Да, тестирование было намного сложнее, чем необходимо. Да, изменение функциональности вызывало страх, и копирование стало естественным благодаря подходу.
Но они могли, по крайней мере, узнать, что было доступно, создав один класс, или они могли делать то, что им нужно, не понимая разницы между интерфейсами, абстрактными классами, конкретными классами и т. Д. И им не нужно было искать ничего, кроме методы, возвращаемые intellisense или известные таблицы, в которых находились данные.
Я гуглил / глотал и даже yahoo! D, но я не нашел никакого подтверждения этой проблемы.
Так что, возможно, нет проблемы, и я просто что-то упустил. Я ломал голову, пытаясь найти решение, в котором разработчики, которые не работают с реальным поведением / дизайном, могут легко обнаружить, как что-то сделать, не обращаясь к каким-либо внешним документам или не сканируя имена классов в различных компонентах / проекты, чтобы найти тот, который звучит как он будет работать.
Единственное, что мне удалось придумать, - это, из-за отсутствия лучшего названия, «Table of Content Class», который больше ничего не делает, возвращая фактические классы (и на самом деле большинство из них являются интерфейсами, но они не знать разницу или даже заботиться), что другие разработчики могут использовать для выполнения реальных задач, желаемых. Все еще заканчиваются действительно большими классами, но в них почти нет поведения.
Есть ли лучший способ, который не требует глубоких знаний среднего уровня, где происходит фактическая реализация SOLID?
По сути, я спрашиваю, есть ли способ позволить разработчикам типа CRUD оставаться разработчиками CRUD в очень сложной системе?