Pular para o conteúdo principal

Questão de Engenharia de Software — Clean Code (Código Limpo) — CESPE / CEBRASPE 2025

Engenharia de SoftwareClean 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.

  1. CCerto
  2. 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.

Gabarito: Errado (E).

Link permanente: /questoes/ce417733