Qual alternativa a seguir apresenta corretamente uma boa prática de “clean code”?
Questão
Qual alternativa a seguir apresenta corretamente uma boa prática de “clean code”?
Alternativas
a. Nomes de classes devem ter verbos.
b. Cada função deve fazer apenas coisas relacionadas.
c. Esconda o propósito ao nomear as coisas.
d. Evite efeitos colaterais.
e. Nomes de métodos devem ter adjetivos.
Explicação
Vamos avaliar cada alternativa à luz de boas práticas de Clean Code (código limpo):
a) “Nomes de classes devem ter verbos.” Em geral, nomes de classes (especialmente em OO) devem ser substantivos ou frases nominais (ex.: Pedido, UsuarioService). Verbos costumam ser mais apropriados para métodos/funções. Portanto, não é uma boa prática.
b) “Cada função deve fazer apenas coisas relacionadas.” Embora a ideia aponte para coesão, ela está vaga. A recomendação clássica é mais forte: uma função deve fazer uma coisa só (Single Responsibility) e fazê-la bem. “Coisas relacionadas” ainda permite funções grandes com múltiplas etapas. Não é a melhor formulação.
c) “Esconda o propósito ao nomear as coisas.” Isso é o oposto do clean code. Nomes devem revelar intenção (intention-revealing names). Errada.
d) “Evite efeitos colaterais.” Evitar efeitos colaterais é uma boa prática de clean code: funções com efeitos colaterais tendem a ser mais difíceis de entender, testar e manter, pois alteram estados externos de forma inesperada. Correta.
e) “Nomes de métodos devem ter adjetivos.” Métodos/funções geralmente devem ser verbos ou frases verbais (ex.: calcularTotal, validarSenha), não “adjetivos”. Errada.
Alternativa correta: d.