Questão de Engenharia de Software — Clean Code (Código Limpo) — CESPE / CEBRASPE 2025
Engenharia de Software›Clean Code (Código Limpo)
Código
ce417733
Banca
CESPE / CEBRASPE
Órgão
PC DF
Ano
2025
Cargo
GAAPC ( )
Julgue o item a seguir, referente a clean code e à ferramenta SonarQube.
Na produção de um código, a adoção dos termos primário e secundário em vez de mestre e escravo, respectivamente, é uma maneira de produzir um código em observância ao atributo da responsabilidade do clean code.
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoC — Certo
Esta resolução diverge do gabarito oficial. A banca deu Certo; a resolução abaixo sustenta o contrário e explica por quê — ela não foi reescrita para concordar. Acontece nos dois sentidos: há gabarito que cai em recurso e há resolução que erra. Confira na fonte antes de fixar o entendimento.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Clean Code: nomes significativos e a pegadinha do atributo
Gabarito: Errado (E). A substituição de termos como "mestre/escravo" por "primário/secundário" é uma prática recomendada pelo Clean Code, mas ela se relaciona ao atributo de nomes significativos (ou meaningful names), e não ao atributo de responsabilidade — que trata de manter funções e classes coesas, fazendo uma única coisa. A banca trocou o atributo para induzir o erro.
O Clean Code, popularizado por Robert C. Martin (Uncle Bob), é um conjunto de princípios e boas práticas que visam produzir código legível, simples e de fácil manutenção. Dentre seus atributos, destacam-se: nomes significativos, funções pequenas e que fazem uma única coisa, responsabilidade única (que inspirou o 'S' do SOLID), ausência de duplicação, testabilidade e comentários úteis. A escolha de nomes é um dos pilares: um bom nome deve revelar a intenção, evitar desinformação, usar nomes pronunciáveis e buscáveis, e — como no caso da questão — evitar termos culturalmente carregados ou que possam ser ofensivos, como "mestre/escravo", preferindo alternativas neutras como "primário/secundário", "líder/seguidor" ou "controlador/controlado".
A responsabilidade, por sua vez, é um atributo que se refere à coesão: cada módulo, classe ou função deve ter uma única razão para mudar, ou seja, deve ser responsável por uma única parte da funcionalidade do software. É o princípio da Responsabilidade Única (SRP — Single Responsibility Principle), que é o 'S' do SOLID. Enquanto nomes significativos dizem respeito à comunicação (o nome deve expressar a intenção), a responsabilidade diz respeito à estrutura (cada componente deve ter um propósito bem definido). São atributos distintos, e a questão os confunde.
Na prática, um código que segue o Clean Code teria, por exemplo, uma classe Pedido que apenas gerencia os dados do pedido, e uma classe CalculadoraDeImpostos que apenas calcula impostos — cada uma com uma única responsabilidade. Já a escolha de nomes como primario e secundario em vez de mestre e escravo é uma decisão de nomenclatura, que visa evitar termos que possam ser considerados ofensivos ou que carreguem conotações negativas, promovendo um ambiente de trabalho mais inclusivo e respeitoso.
A pegadinha da banca está em trocar o atributo: ela pega uma prática real do Clean Code (a substituição de termos) e a associa a um atributo errado (responsabilidade). O candidato que conhece a prática, mas não domina a classificação dos atributos, pode marcar como certo. Para acertar, é preciso saber que a escolha de nomes é um aspecto de nomes significativos, não de responsabilidade.
NÃO CAIA NESSA!
A banca adora trocar os atributos do Clean Code para confundir. Aqui, ela pega a prática de substituir "mestre/escravo" por "primário/secundário" (que é real e recomendada) e a associa ao atributo de responsabilidade, quando na verdade ela pertence ao atributo de nomes significativos. Fique atento: nomes significativos tratam da comunicação (o nome expressa a intenção), enquanto responsabilidade trata da estrutura (cada componente faz uma única coisa). Com treino, você enxerga essas trocas de longe 💪.
Clean Code
1Nomes significativos
Revelam a intenção
Evitam desinformação
Pronunciáveis e buscáveis
Evitam termos ofensivos
mestre/escravo → primário/secundário
2Responsabilidade única (SRP)
Coesão
Uma única razão para mudar
Estrutura, não comunicação
LEVEL · soulevel.com.br
Item — ❌ Errado
A afirmação está errada porque a substituição de termos como "mestre/escravo" por "primário/secundário" é uma prática de nomes significativos (meaningful names), não de responsabilidade. O atributo de responsabilidade refere-se à coesão e ao princípio da responsabilidade única (cada função/classe deve ter uma única razão para mudar), enquanto a escolha de nomes é uma questão de comunicação e clareza. A banca trocou o atributo para induzir o erro.