Если у нас была определенная иерархия в приложении. Поскольку исключая 3 - разделяют архитектуру на уровни, как мы ограничиваем последующих разработчиков в нарушении норм?
Поскольку исключая, в случае MVP (не asp.net MVC) архитектура, предъявитель должен всегда связывать модель и представление. Это помогает в записи надлежащих программ модульного теста. Однако у нас были экземпляры, куда люди непосредственно импортировали модель в поле зрения и вызвали функции, нарушающие нормы, и следовательно тестовые сценарии не могли быть записаны правильно.
Существует ли способ, которым мы можем ограничить, каким классам позволяют наследоваться ряду классов? Я смотрю на различные возможности, включая принятие другого шаблона разработки, однако новый подход должен стоить включенного изменения кода.
Боюсь, это невозможно. Мы пытались добиться этого с помощью атрибутов, но у нас ничего не вышло. Вы можете сослаться на мою прошлую публикацию на SO .
Лучшее, что вы можете сделать, - это продолжать проверять свои сборки с помощью NDepend . NDepend показывает диаграмму зависимости сборок в вашем проекте, и вы можете сразу отслеживать нарушения и принимать меры в ответ.
(источник: ndepend.com )
Вы хотите решить проблему людей с помощью программного обеспечения? Приготовьтесь к миру боли!
Чтобы решить проблему, нужно убедиться, что у вас есть способы работать с людьми, чтобы у вас не возникали такие проблемы ... Парное программирование / повторение. Вовлечение людей, когда они впервые попадают в проект, и т. Д.
Сказав это, вы можете написать инструменты, которые анализируют программное обеспечение и ищут общие проблемы. Но люди довольно креативны и могут найти самые причудливые способы делать что-то.
Как только все будет заблокировано в соответствии с вашим удовлетворением, появятся новые требования, и вам придется преодолеть их.
Обеспечение такой строгости на уровне программирования с помощью .NET практически невозможно, учитывая, что программист может получить доступ ко всем закрытым членам через отражение.
Постарайтесь и запланируйте регулярные проверки кода, обеспечьте обучение и проведите надлежащее обучение. И, как вы сказали, это быстро станет очевидным, когда вы не сможете написать против него модульные тесты.