Java / Android: classes locais anônimas vs classes nomeadas

Gostaria de perguntar qual é a boa prática de usar classes anônimas versus classes internas nomeadas?

Estou escrevendo um aplicativo Android, que inclui muitos elementos da interface do usuário (botões, campos de texto, etc.). Para muitos deles, preciso de algum tipo de ouvinte.onCreate da aplicação eu tenho várias classes anônimas muito pequenas como:

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

Cada uma dessas classes anônimas tem de 5 a 20 linhas - pequena o suficiente e é adequada para recomendações deJava ™ em poucas palavras livro:

Em geral, você deve considerar o uso de uma classe anônima em vez de uma classe local se:

A turma tem um corpo muito curto.Apenas uma instância da classe é necessária.A classe é usada logo após ser definida.O nome da classe não facilita a compreensão do seu código.

Mas o problema, IMO, é queonCreate torna-se bastante grande e o código se torna mais complexo para ler e entender, olhando rapidamente para ele. Ainda é fácil de entender, mas simplesmente grande demais.

Então, qual seria a melhor prática nesse caso - ter um monte de pequenas subclasses internas, onde cada uma delas é bem separada, mas usada apenas uma vez ou melhor, continue usando classes anônimas?