Сегодня я поговорил со своим профессором о структуре структуры данных Chunklist, над которой мы работали. По сути, это гибрид упорядоченного кругового связанного списка с каждым узлом, содержащим массив.
Поскольку это упорядоченный список, метод add () довольно сложен, поэтому я написал вложенный класс для хранения вспомогательных методов, таких как разбиение фрагмента на два более мелких чанка, поиск точки вставки, создание нового узел, среди других. Эти вспомогательные методы поддерживают размер метода не более 30 строк, но если бы все было включено, один метод был бы более 150 строк.
РЕДАКТИРОВАТЬ: уточнил точку зрения профессора
Его позиция заключалась в том, чтобы обойтись без вспомогательного класса и сделать так, чтобы он возвращал только узел и индекс внутри него, который используется итератором, и все остальное видно для точки читабельности. Я создал вспомогательный класс как ListLoc<E> ll= new ListLoc();
, а доступ к методам как ll.insertItem(item)
, с его точки зрения, был затруднен для удобства чтения и выполнения программы. Его слова: «Я смотрю на ll как на объект чего-то, а не просто на методы экземпляра». Моя позиция заключалась в том, почему эти методы видимы, когда они оба являются неотъемлемой частью работы структуры и к ним нельзя обращаться напрямую.
Итак, должны ли вспомогательные методы быть видимыми для конечного пользователя при построении пользовательской структуры данных, даже если они НЕ должны использоваться?