Ao lidar com algoritmos complicados em linguagens com suporte para funções aninhadas (como Python e D), geralmente escrevo funções enormes (porque o algoritmo é complicado), mas atenuo isso usando funções aninhadas para estruturar o código complicado. As funções enormes (mais de 100 linhas) ainda são consideradas más, mesmo que sejam bem estruturadas internamente através do uso de funções aninhadas?
Editar: para aqueles que não estão familiarizados com Python ou D, as funções aninhadas nessas linguagens também permitem o acesso ao escopo da função externa. Em D esse acesso permite a mutação de variáveis no escopo externo. No Python, ele permite apenas a leitura. Em D, você pode desabilitar explicitamente o acesso ao escopo externo em uma função aninhada declarando-o static
.