Personalmente, no le temo a los métodos largos, siempre y cuando la persona que los escribe los escriba bien (cada parte de la subtarea separada por 2 líneas nuevas y un bonito comentario precediéndola, etc. Además, la identación es muy importante.) De hecho, muchas veces incluso los prefiero (por ejemplo, al escribir código que hace las cosas en un orden específico con lógica secuencial).
Además, realmente no entiendo por qué dividir un método largo en 100 piezas mejorará la legibilidad (como otros sugieren). Solo lo opuesto. Usted solo terminará saltando por todos lados y guardando pedazos de código en su memoria solo para obtener una imagen completa de lo que está sucediendo en su código. Combine eso con la posible falta de comentarios, nombres de funciones incorrectos, muchos nombres de funciones similares y tiene la receta perfecta para el caos. Además, podría ir al otro extremo al intentar reducir el tamaño de los métodos: crear MUCHAS clases y MUCHAS funciones, cada una de las cuales puede tomar MUCHOS parámetros. No creo que esto mejore la legibilidad tampoco (especialmente para un principiante de un proyecto que no tiene idea de qué hace cada clase/método).
Y la exigencia de que "una función debería hacer 'una cosa'" es muy subjetiva. 'Una cosa' puede ser aumentar una variable por uno hasta hacer una tonelada de trabajo supuestamente por 'lo mismo'.
Mi regla solo es reutilizable: El mismo código no debería aparecer muchas veces en muchos lugares. Si este es el caso, necesita una nueva función. Todo lo demás es solo charla filosófica. En una pregunta de "¿por qué haces que tus métodos sean tan grandes?", Respondo, "¿por qué no si el código es simple?".
(solo mi opinión - vote tanto como desee)