Não é um anti-padrão. Os antipadrões têm alguma propriedade que faz parecer uma boa ideia, o que leva as pessoas a fazerem isso de propósito; eles são planejados como padrões e depois dá terrivelmente errado.
É também o que gera debates sobre se algo é um padrão, um antipadrão ou um padrão comumente mal aplicado que ainda tem usos em alguns lugares.
Isso está errado.
Para adicionar um pouco mais.
Esse código é supersticioso ou, na melhor das hipóteses, uma prática de culto à carga.
Uma superstição é algo feito sem uma justificativa clara. Pode estar relacionado a algo real, mas a conexão não é lógica.
Uma prática de culto à carga é aquela em que você tenta copiar algo que aprendeu de uma fonte mais experiente, mas na verdade está copiando os artefatos de superfície em vez do processo (chamado de um culto na Papua Nova Guiné que faria rádios de controle de aeronaves de bambu na esperança de fazer os aviões japoneses e americanos da Segunda Guerra Mundial voltarem).
Nos dois casos, não há nenhum argumento real a ser feito.
Um antipadrão é uma tentativa de uma melhoria razoável, seja na pequena (aquela ramificação extra para lidar com o caso extra que precisa ser tratado, que leva ao código de espaguete) ou na grande onde você implementa deliberadamente um padrão que seja desacreditado ou debatido (muitos descreveriam os singletons como tais, com alguns excluindo somente leitura - por exemplo, objetos de log ou somente leitura, por exemplo, objetos de definições de configuração - e alguns condenariam até mesmo esses) - ou então onde você está resolvendo o problema problema errado (quando o .NET foi lançado pela primeira vez, a MS recomendou um padrão para lidar com o descarte quando você tinha campos não gerenciados e campos gerenciados descartáveis - ele realmente lida com essa situação muito bem, mas o problema real é que você tem ambos os tipos de campo na mesma classe).
Como tal, um antipadrão é algo que uma pessoa inteligente que conhece bem o idioma, o domínio do problema e as bibliotecas disponíveis deliberadamente fará, que ainda tem (ou se argumenta ter) uma desvantagem que supera a vantagem.
Como nenhum de nós começa conhecendo bem um determinado idioma, domínio do problema e bibliotecas disponíveis, e como todo mundo pode perder alguma coisa ao passar de uma solução razoável para outra (por exemplo, comece a armazenar algo em um campo para um bom uso e tente refatorá-lo, mas não concluir o trabalho, e você terminará com o código como na pergunta) e, como todos nós perdemos as coisas de tempos em tempos no aprendizado, todos criamos algum código supersticioso ou de culto à carga em algum momento . A coisa boa é que eles são realmente mais claros de identificar e corrigir do que os antipadrões. Os verdadeiros anti-padrões não são, sem dúvida, anti-padrões, ou têm alguma qualidade atraente, ou pelo menos têm alguma maneira de atraí-los, mesmo quando identificados como ruins (muitas e poucas camadas são incontroversamente ruins, mas evitam uma) leva ao outro).