Я нахожусь в процессе создания довольно большого гибкого приложения, и со временем оно начало стремиться к невозможности обслуживания.
Я использую 3 внешних библиотечных проекта, которые все еще достаточно малы, чтобы их можно было поддерживать и использовать повторно, но основной проект, кажется, невозможно поддерживать организованным.
Частично проблема заключается в том, что у меня есть около 30 объектов, унаследованных от одного абстрактного объекта типа суперкласса. Все дочерние объекты имеют как логический компонент, так и пользовательский интерфейс, которые тесно связаны друг с другом. Объект суперкласса имеет около 60 общих методов и свойств, большинство из которых могут быть переопределены в любом из дочерних классов, некоторые из которых должны быть переопределены во всех дочерних классах.
Чтобы добавить сложности, они должны взаимодействовать между собой, и обычно это происходит через объект-контейнер, в котором они находятся. Кроме того, основной проект должен создавать из них объекты-значения, чтобы их можно было отправлять на сервер FlourineFX. для хранения и дополнительной логики аутентификации / авторизации.
Я создал гораздо большие проекты на языках от старого MS BASIC (до VB), Ada, VB (от 3 до .Net 1), C ++ и C # без этой проблемы. (хорошо, старый VB склонялся к этой проблеме из-за такой же тесной интеграции между пользовательским интерфейсом и логикой). Итак, есть ли что-то, чего мне не хватает, или есть какие-то лучшие практики, которые я могу реализовать? (даже если это означает переписывание целого ряда кода)
И да, это может быть расширение этого разговора.