Os code smells são sintomas de escolhas inadequadas de design e implementação que podem prejudicar a compreensão do código e possivelmente aumentar a propensão a mudanças e defeitos. Um vasto catálogo de code smells foi definido na literatura e inclui code smells que podem ser encontrados em qualquer tipo de sistema (por exemplo, God Classes), independentemente da sua arquitetura. Por outro lado, sistemas de software que adotam arquiteturas específicas (por exemplo, o padrão Model-View-Controller) também podem ser afetados por outros tipos de práticas inadequadas.

Pesquisamos e entrevistamos 53 desenvolvedores MVC para coletar práticas inadequadas a serem evitadas ao trabalhar em aplicativos Web MVC. Em seguida, seguimos um procedimento de codificação aberta nas respostas coletadas para definir um catálogo de seis code smells do Web MVC, a saber: Brain Repository, Fat Repository, Promiscuous Controller, Brain Controller, Laborious Repository Method e Meddling Service. Em seguida, realizamos um estudo em 100 projetos MVC para avaliar o impacto desses code smells na propensão a alterações e defeitos no código. Além disso, entrevistamos 21 desenvolvedores para verificar a percepção deles sobre os code smells definidos.

Os resultados mostram que os code smells em aplicações Web MVC (i) geralmente aumentam a propensão das classes a mudanças e defeitos e (ii) são percebidos pelos desenvolvedores como problemas graves.