O artigo de hoje do TDWTF começa com uma confissão do autor:
Eu não sabia o que era o antipadrão for-case até relativamente recentemente, quando havia uma série de artigos condenando-o como antipadrão. Tenho certeza de que provavelmente já o usei em algum momento, mas nunca o conheci pelo nome . É considerado um antipadrão de livro didático que geralmente implica um mal-entendido de loop for, declarações de caso, o problema sendo resolvido ou uma combinação dos três.
Ele então prossegue como se o leitor, naturalmente, soubesse o que é o antipadrão do Caso For, sem que seja necessária qualquer explicação adicional.
Mas eu não! Não vi a "série de artigos" de que Remy fala, e a única referência significativa que posso encontrar no Google (além do artigo de Remy) é um post de Raymond Chen sobre o antipadrão for-if , aparentemente relacionado . Ele também não define o "antipadrão para casos".
O que é esse "antipadrão for-case" sobre o qual esses caras estão falando e o que o torna um antipadrão?
fonte
Respostas:
O "padrão" foi introduzido em um artigo anterior do Daily WTF. A idéia básica é que você tenha um
for
loop com umcase
interior que é selecionado com base nafor
variável de índice do loop.Assumindo que a variável de índice não pode ser alterado dentro do loop, (o que nem sempre é verdade, dependendo do idioma que você está usando,) um pouco de análise demonstra que a execução é exatamente o mesmo como se você removeu o
for
eocase
inteiramente e todos os blocos de casos foram simplesmente executados sequencialmente.fonte
Para simplificar, você está aninhando dois métodos diferentes de controle de fluxo, o que dificulta a compreensão do código.
Se você vir um loop for, geralmente assume que as condições do loop controlarão a lógica dentro do loop. Mas se você aninhar uma declaração de caso inteira dentro, com toda a sua própria lógica, isso sai pela janela.
fonte