Java / Android: анонимные локальные классы против именованных классов
Я хотел бы спросить, какова хорошая практика использования анонимных классов по сравнению с именованными внутренними классами?
Я пишу приложение для Android, которое включает в себя множество элементов пользовательского интерфейса (кнопки, текстовые поля и т. Д.). Для многих из них мне нужны какие-то слушатели, поэтому вonCreate
приложения у меня есть куча довольно небольших анонимных классов, таких как:
someButton.setOnClickListener(
new View.OnClickListener() {
public void onClick(View v) {
// do something...
}
}
);
Каждый из таких анонимных классов имеет размер 5-20 строк - достаточно маленький и подходит для рекомендаций отJava ™ в двух словах книга:
В общем, вы должны рассмотреть возможность использования анонимного класса вместо локального класса, если:
У класса очень короткое тело.Нужен только один экземпляр класса.Класс используется сразу после его определения.Название класса не делает ваш код легче для понимания.Но проблема, IMO, в том, чтоonCreate
становится достаточно большим, и код становится более сложным для чтения и понимания, если быстро взглянуть на него. Это все еще легко понять, но просто слишком велико.
Итак, что было бы лучше в этом случае - иметь кучу небольших внутренних подклассов, где каждый из них хорошо разделен, но используется только один раз или лучше использовать анонимные классы вместо этого?