Ok, indo na lista:
Eu aprendi há muito tempo que objetos instanciados em um loop geralmente são uma má idéia
Não em nenhum idioma que usei.
Em C é uma boa idéia declarar suas variáveis na frente, mas isso é diferente do que você disse. Pode ser ligeiramente mais rápido se você declarar objetos acima do loop e reutilizá-los, mas há muitos idiomas em que esse aumento de velocidade não terá sentido (e provavelmente alguns compiladores que fazem a otimização para você :)).
Em geral, se você precisar de um objeto dentro de um loop, crie um.
os construtores devem fazer um mínimo de trabalho
Os construtores devem instanciar os campos de um objeto e fazer qualquer outra inicialização necessária para tornar o objeto pronto para uso. Geralmente, isso significa que os construtores são pequenos, mas há cenários em que isso seria uma quantidade substancial de trabalho.
existe alguma razão para fazer algo assim, em qualquer linguagem de programação, ou esta é apenas mais uma submissão ao Daily WTF?
É uma submissão ao Daily WTF. Concedido, existem coisas piores que você pode fazer com o código. O problema é que o autor tem um grande mal-entendido sobre o que são classes e como usá-las. Especificamente, aqui está o que vejo que está errado com este código:
- Uso indevido de classes: A classe está basicamente agindo como uma função. Como você mencionou, ele deve ser substituído por uma função estática ou a função deve ser implementada apenas na classe que está chamando. Depende do que faz e onde é usado.
- Sobrecarga de desempenho: dependendo do idioma, a criação de um objeto pode ser mais lenta do que chamar uma função.
- Confusão geral: geralmente é confuso para o programador como usar este código. Sem vê-lo usado, ninguém saberia como o autor pretendia usar o código em questão.