Я все еще изучаю Java/Android, и я начал свой самый большой проект. В этом проекте у меня есть класс, который я создал для очистки моего кода. Он содержит множество методов. Даже это, однако, слишком захламлено, и я ищу идеи организации. Мой текущий план состоит в том, чтобы разделить его на категории и иметь каждую категорию в качестве подкласса. Поэтому мне нужно только получить доступ к первому классу, и он должен предоставить доступ ко всем моим методам. Это ужасная идея? Есть ли лучший способ организовать это на Java? В C++ я бы просто создал разные файлы для организации разных методов, но, насколько я понимаю в Java, методы должны содержаться в классах (или действиях в случае Android). Я здесь отсюда?Методы Java: организационные советы?
ответ
У вас есть один класс, который имеет слишком много обязанностей. Это обычная проблема, и есть официальное название для решения: Извлечение класса.
Вот как refactoring.com описывает «класс экстракта» рефакторинг:
Создать новый класс и переместить соответствующие поля и методы из старого класса в новый класс.
Вы упомянули о создании подкласса для каждой категории. Вы только хотите это сделать, если есть действительно какая-то иерархия среди ваших обязанностей.
Например, предположим, что у вашего первоначального класса есть методы, чтобы стереть счетчик, подметать пол и высушить полку. Если эти действия не имеют ничего общего, тогда не создавайте подклассы. Если все они имеют что-то общее, то вы можете сделать все эти классы подклассом класса CleaningActivity
. Не вводите иерархию наследования, где она не нужна.
Благодарим вас за этот ответ. Он осторожно указал на проблему с тем, как я думал об этом. – jagrakye
Не могу ответить, не зная, что делают эти классы. Вы, наверное, не знаете, потому что вы учитесь. Принять это. Делайте то, что считаете лучшим, посмотрите, работает ли оно, и измените его, если это не так. – duffymo
Один ответ: выберите «Чистый код» Роберта «Дядя Боб» Мартин из интернетов; и прочитайте его со страницы 1 до конца. В самом деле. Это ответит на ваш вопрос; и научить вас многого для будущего. – GhostCat
Я не понимаю, что делает класс, который «очищает» ваш код. – duffymo