Я бы определенно начал с юнит-тестов .Если я правильно понимаю, к счастью, вы пишете код с нуля, поэтому вы можете применить TDD .Это также помогло бы разобраться в тонкостях и ожидаемом поведении RowSet
.
С проведением модульных тестов я был бы более свободен в рефакторинге.Моим первым (и единственным) инстинктом было бы попытаться делегировать функциональность внешним классам , предпочтительно , разделяя функциональность на (более или менее) логически связные группы .Эти классы делегатов было бы легче понять, протестировать и поддерживать.
Даже если возможности для делегирования сильно или полностью ограничены (например, поскольку вся функциональность тесно связана, вы не можете разделить ее на отдельныеклассы), все же модульные тесты очень помогают, документируя известное поведение класса .
Я вполне уверен, что это не так уж ново для вас - извините, чтобы признать, что это лучший совет, который яможет предложить.Необходимость реализации гигантского базового интерфейса накладывает довольно сильные ограничения на дизайн: - (