Полу незначительный фон:
Я работаю над страницей с двумя наборами складных панелей. (используя nHibernate) Я получаю объекты категорий со списком элементов в них, и для каждой категории создаю левую панель и правую панель. На обеих панелях есть ListBox. Элементы предварительно заполнены в левом окне списка, и пользователь может выбрать и переместить элементы в правое поле списка (под соответствующей категорией).
Поскольку я создавал и работал над этим, у меня появилось много общих методов, таких как buildPanel (side, categoryID), а затем я получил много повторяющихся операторов if для различения двух сторон
if type=PanelType.Left then
set these 5 id strings to access components
else
...
Код запутался, поэтому я переместил множество строк логики и статического компоновщика для идентификаторов компонентов в закрытый вспомогательный класс, чтобы упростить чтение и отслеживание других частей основного класса. Проблема, которую я вижу, состоит в том, что закрытый класс чрезвычайно зависит от конкретных структур родительского класса. Происходит минимальное количество инкапсуляции, и я, возможно, усложняю логику, даже если отдельные компоненты в коде легче читать.
У меня такой вопрос: когда вы используете такой закрытый класс, допустимо ли его тесно интегрировать с родительским классом (поскольку он закрытый и реализован в том же файле), лучше ли мне снова провести рефакторинг и найти способ либо упростить мой исходный код до как можно более короткого без вспомогательного класса (поместите все функции категории / панели в одно место и скройте их в своем регионе, когда я их не использую), или я должен перейти к больше логики в классе помощника и просто сопоставление моих событий непосредственно подклассу.
После ввода всего этого, я склоняюсь к последнему варианту, но я все еще разрываюсь / смущен всем этим ...