Java / Android: clases locales anónimas frente a clases con nombre

Me gustaría preguntar ¿cuál es la buena práctica en el uso de clases anónimas versus clases internas nombradas?

Estoy escribiendo una aplicación de Android, que incluye muchos elementos de la interfaz de usuario (botones, campos de texto, etc.). Para muchos de ellos necesito algún tipo de oyentes, así que enonCreate de la aplicación tengo un montón de clases anónimas bastante pequeñas como:

someButton.setOnClickListener(
    new View.OnClickListener() {
        public void onClick(View v) {
            // do something...
        }
    }
);

Cada una de esas clases anónimas es de 5 a 20 líneas grandes, lo suficientemente pequeñas y se ajustan bien a las recomendaciones deJava ™ en pocas palabras libro:

En general, debe considerar usar una clase anónima en lugar de una clase local si:

La clase tiene un cuerpo muy corto.Solo se necesita una instancia de la clase.La clase se usa justo después de que se define.El nombre de la clase no hace que su código sea más fácil de entender.

Pero el problema, en mi opinión, es queonCreate se vuelve bastante grande y el código se vuelve más complejo de leer y comprender al verlo rápidamente. Todavía es fácil de entender, pero simplemente demasiado grande.

Entonces, ¿qué sería una mejor práctica en tal caso: tener un montón de pequeñas subclases internas, donde cada una de ellas está bien separada, pero se usa solo una vez o mejor, sigue usando clases anónimas?