Ir para o Conteúdo 1 Ir para a Página Inicial 2 Ir para o menu de Navegação 3 Ir para a Busca 4 Ir para o Mapa do site 5
Abrir menu principal de navegação
Governo Digital
Termos mais buscados
  • imposto de renda
  • inss
  • assinatura
  • cnh social
  • mei
Termos mais buscados
  • imposto de renda
  • inss
  • assinatura
  • Estratégias e Governança Digital
    • Secretaria de Governo Digital
    • Sistema de Administração dos Recursos de Tecnologia da Informação (Sisp)
      • Governança de Talentos
      • Autodiagnóstico - iGOVSISP
      • Comissão de Coordenação do SISP - CCSISP
      • Guia do Gestor
      • Sobre o SISP
    • Transformação Digital
      • Trajetória da transformação digital
      • Ferramentas
      • O que oferece?
      • Lista Serviços Digitais
      • Central de Qualidade
    • Planos de Transformação Digital
      • PTDs Vigentes
      • Kit de Elaboração PTD
      • Modelo Gestão Risco
    • Estratégia Nacional de Governo Digital
      • Perguntas Frequentes
      • Comitê
    • Estratégia Federal de Governo Digital
      • Um Governo Centrado no Cidadão e Inclusivo
      • Um Governo Integrado e Colaborativo
      • Um Governo Inteligente e Inovador
      • Um Governo Confiável e Seguro
      • Um Governo Transparente, Aberto e Participativo
      • Um Governo Eficiente e Sustentável
      • Monitoramento EFGD
      • Monitoramento EFGD 2024-2027
      • EFGD 2024 - 2027
      • Contratação de Soluções de TIC
      • EFGD 2024 - 2027
    • Rede Nacional de Governo Digital
      • Mapa
      • Guia: 10 passos para a transformação digital em estados e municípios
      • Municípios
    • Rede Federal de Ensino
    • Startup GOV.BR
      • Guia - GPS
    • Planos de Transformação Digital - IFES (CGREP / Altino / DEZ-2025)
      • Kit de Elaboração PTD
      • Modelo Gestão Risco
      • Catálogo de Serviços - IFES
  • Plataformas e Serviços Digitais
    • Conta GOV.BR
    • Ferramenta de Avaliação
      • Links
    • Ferramenta de Automação
    • Conecta GOV.BR
    • Protocolo GOV.BR
    • Software Público
    • Assinatura Eletrônica
    • Rede Nacional de Governo Digital - Rede GOV.BR
    • Manual de Edição: site Governo Digital
    • Regras para Editores de Conteúdo gov.br
    • Agenda gov.br
  • Identidade
    • Identificação do Cidadão e Carteira de Identidade Nacional
      • Serviço de Identificação do Cidadão
      • Imagens
      • Câmara Executiva Federal de Identificação do Cidadão (CEFIC)
      • Dúvidas Frequentes sobre a CIN
      • Antiga Carteira de Identidade Nacional CIN
      • Legislação
    • Identidade Digital para Gestores Públicos
      • Programa Balcão GOV.BR
      • Dúvidas Frequentes do Ecossistema da Identidade Digital GOV.BR
      • Orientações sobre os critérios de segurança adotados na Conta GOV.BR
    • Conta gov.br
      • O que é a conta gov.br?
      • Onde usar a conta gov.br
      • Níveis da conta gov.br
      • Segurança da conta
      • Vídeos tutoriais
      • Ajuda da conta gov.br
      • Termo de Uso e Aviso de Privacidade
      • Exclusão da conta gov.br
    • Assinatura Eletrônica
      • Saiba mais sobre a assinatura eletrônica
      • Assinatura Eletrônica para Órgãos
      • Importar certificados gov.br no Adobe Acrobat Reader
    • Carteira de documentos digitais
    • Gerenciar o uso dos seus dados pessoais
    • Prova de Vida
  • Acessibilidade e Usuário
    • Atendimento gov.br
      • Dúvidas na conta gov.br
      • Dúvidas na assinatura gov.br
      • Dúvidas no aplicativo gov.br
      • Dúvidas nos dados cadastrais
      • Atendimento Presencial
      • Integração dos Serviços Estaduais
    • Acessibilidade Digital
      • Modelo de Acessibilidade
      • Ferramentas
      • Padrões Web em Governo Eletrônico
      • Referências e Modelos de Implementação
      • Material de apoio
      • Recursos de Acessibilidade
      • ABNT NBR 17225 - Acessibilidade em Conteúdo e Aplicações Web
      • ABNT NBR 17060 - Acessibilidade em Dispositivos Moveis
      • Cursos
    • Experiência do Usuário
    • VLibras
  • Contratações de TIC
    • Catálogos de Soluções de TIC com Condições Padronizadas
      • Arquivos
      • Catálogo de Soluções de TIC com Condições Padronizadas (Adobe)
    • Compras de TIC
    • Legislação
      • Processo de Contratação de Soluções de TIC Regido Pela Lei n° 14.133, de 2021
      • Processo de Contratação de Soluções de TIC Regido Pela Lei n° 8.666, de 1993
      • Análise de Alçadas Regido Pela Lei n° 14.133, de 2021
      • Legislação Aplicada à Contratação de TIC
      • Modelo de Contratação de Software e Serviços em Nuvem
      • Modelo de Contratação e Gestão de Estações de Trabalho
      • Modelo de Contratação de Serviços de Desenvolvimento, Manutenção e Sustentação de Software
      • Modelo de Contratação de Serviços de Outsourcing de Impressão
      • Modelo de Contração de Serviços de Operação de Infraestrutura e de Atendimento a Usuários de TIC
      • Modelo de Composição de Preços nas Contratações com Empresas Públicas Federais
      • Orientações - Contratos Baseados em UST
      • Todos os Modelos, Diretrizes e Orientações para Contratação de Soluções de TIC
      • Orientações - Contratos Baseados em UST
    • Orientações e Apoio Especializado
      • Conceito de Solução de TIC
      • Informações e Orientações sobre Análise de Alçadas
      • Pedidos de Excepcionalidade para Contratação de TIC
      • Central de Serviços e Suporte do SISP
      • Capacitações
      • Templates de Artefatos para Contratação e Lista de Verificação
      • FAQ
      • Central de Serviços e Suporte do SISP (C3S)
    • Capacitações
  • Privacidade e Segurança
    • Centro de Excelência em Privacidade e Segurança (CEPS GOV.BR)
      • Vídeos Educativos
      • Jogos Educativos
    • Centro Integrado de Segurança Cibernética (CISC GOV.BR)
    • Framework, Guias e Modelos
    • PPSI 2.0
    • Webnario
  • Infraestrutura Nacional de Dados
    • Interoperabilidade
      • Conecta gov.br
    • Catálogo Nacional de Dados
    • Governança de Dados
    • Informações geoespaciais
    • Ambiente Tecnológico
      • Nuvem
      • Data Centers
      • Infovia
    • Decisão Baseada em Dados
      • Recomendação de serviços
      • Notificação personalizada
      • Caixa Postal Digital do Cidadão
    • Inteligência Artificial
      • imagens
      • Publicações
    • Qualificação de Endereços
  • Capacitação
    • Capacita GOV.BR
    • Eventos e Prêmios
  • Legislação
  • Notícias
  • Mapa do Site
  • GOV.BR
    • Serviços
      • Buscar serviços por
        • Categorias
        • Órgãos
        • Estados
      • Serviços por público alvo
        • Cidadãos
        • Empresas
        • Órgãos e Entidades Públicas
        • Demais segmentos (ONGs, organizações sociais, etc)
        • Servidor Público
    • Temas em Destaque
      • Orçamento Nacional
      • Redes de Atendimento do Governo Federal
      • Proteção de Dados Pessoais
      • Serviços para Imigrantes
      • Política e Orçamento Educacionais
      • Educação Profissional e Tecnológica
      • Educação Profissional para Jovens e Adultos
      • Trabalho e Emprego
      • Serviços para Pessoas com Deficiência
      • Combate à Discriminação Racial
      • Política de Proteção Social
      • Política para Mulheres
      • Saúde Reprodutiva da Mulher
      • Cuidados na Primeira Infância
      • Habitação Popular
      • Controle de Poluição e Resíduos Sólidos
    • Notícias
      • Serviços para o cidadão
      • Saúde
      • Agricultura e Pecuária
      • Cidadania e Assistência Social
      • Ciência e Tecnologia
      • Comunicação
      • Cultura e Esporte
      • Economia e Gestão Pública
      • Educação e Pesquisa
      • Energia
      • Forças Armadas e Defesa Civil
      • Infraestrutura
      • Justiça e Segurança
      • Meio Ambiente
      • Trabalho e Previdência
      • Turismo
    • Galeria de Aplicativos
    • Acompanhe o Planalto
    • Navegação
      • Acessibilidade
      • Mapa do Site
      • Termo de Uso e Aviso de Privacidade
    • Consultar minhas solicitações
    • Órgãos do Governo
    • Por dentro do Gov.br
      • Dúvidas Frequentes em relação ao Portal gov.br
      • Dúvidas Frequentes da conta gov.br
      • Ajuda para Navegar o Portal
      • Conheça os elementos do Portal
      • Política de e-participação
      • Termos de Uso
      • Governo Digital
      • Guia de Edição de Serviços do Portal Gov.br
    • Canais do Executivo Federal
    • Dados do Governo Federal
      • Dados Abertos
      • Painel Estatístico de Pessoal
      • Painel de Compras do Governo Federal
      • Acesso à Informação
    • Empresas e Negócios
Links Úteis
  • Galeria de Aplicativos
  • Participe
  • Galeria de Aplicativos
  • Participe
Redes sociais
  • Instagram
  • Twitter
Você está aqui: Página Inicial Estratégias e Governança Digital Startup GOV.BR Guia - GPS Páginas Saiba Mais Praticas de Engenharia de Software Clean-code
Info

Clean Code


“Desenvolvedores profissionais escrevem código como profissionais, e código escrito por profissionais é código limpo!”

— Robert C. Martin

O que é Clean Code (Código Limpo)?

Robert C. Martin (2014), em seu livro “Clean Code” apresenta várias conceituações sobre o que é código limpo. Autores diferentes utilizam palavras diferentes para conceituar, como:

  • Bjarne Stroustrup (criador C++): “... O código deve ser elegante...”
  • Grady Booch: “... O código limpo é simples e direto...”
  • Dave Thomas: “... Além do seu criador, outro desenvolvedor pode ler e melhorar um código limpo...”
  • Michael Feathers: “... Um código limpo sempre parece que foi escrito por alguém que se importava...”
  • Ron Jeffries: “... Efetue todos os testes, sem duplicação de código, expressa todas as ideias do projeto que estão no sistema, minimiza o número de entidades, como classes, métodos, funções e outras do tipo...”
  • Ward Cunningham (co-criador XP): “... Você sabe que está criando um código limpo, quando cada rotina que você leia se mostra como o que você esperava...”

A partir disso, Robert C. Martin (2014), faz uma compilação e busca apresentar um conjunto de características que possam expressar o que é um código limpo, sendo:

  • Elegante, fácil de se compreender, e agradável de se ler;
  • Simples e direto;
  • Segue princípios de programação;
  • Sem duplicidade;
  • Bem testado;
  • Parâmetros, Métodos, Funções, Classes e Variáveis possuem nomes significativos (que revela seu propósito);
  • Código é autoexplicativo (sem necessidade de comentários para compreender o código);
  • Código bem formatado (é possível ler o código sem precisar utilizar a barra de rolagem);
  • Métodos e Classes devem ter uma única responsabilidade (princípio da responsabilidade única).

Regras Gerais de Clean Code

Keep It Stupid Simple (KISS)

Em português, "mantenha tudo o mais simples possível". É um princípio que nos diz que devemos manter a nossa lógica sempre o mais simples possível. Evitando complexidade desnecessária, para que o código seja fácil de ler e fácil de evoluir ou de se dar manutenção. Ainda que as vezes isso possa significar um código maior em número de linhas.

Abaixo segue um exemplo de um código reescrito para seguir tal princípio. O objetivo era ter uma função que retornaria o nome do dia da semana correspondente ao seu número.

No primeiro caso foi utilizado um switch-case para retornar o dia para cada um dos números possíveis (Figura 1).

KISS - switch-case

Figura 1. KISS - switch-case.

Esse código pode ser simplificado utilizado um vetor com os dias, de forma que basta retornar o dia na posição do vetor que corresponder ao número recebido (ver Figura 2). Dessa forma, a legibilidade é melhor e fica mais simples evitar possíveis erros e realizar alterações necessárias. Ficaria mais simples introduzir alternativas de nomes de dias em idiomas diferentes, por exemplo.

KISS

Figura 2. KISS.

Regra do Escoteiro

"Deixe sempre o acampamento mais limpo do que você encontrou!". O lema dos escoteiros também serve para o código. Toda vez que um desenvolvedor mexer em um código, deverá deixá-lo mais bem organizado do que como o encontrou. Se todos os desenvolvedores de um time seguirem esse princípio, aos poucos cada trecho de código poderá evoluir.

Para seguir esse princípio os passos são simples. Sempre que um código for ser evoluído, o desenvolvedor deverá primeiro analisa-lo e refletir se não seria possível melhorar algum trecho. Caso seja possível, a melhoria deve ser feita antes das novas alterações.

Causa Raiz

Sempre procure a causa raiz do problema. Por vezes quando surge um novo bug os desenvolvedores implementam correções temporárias, que são rápidas e fáceis de fazer, mas que não corrigem o problema por completo.

Isso faz com que o problema volte a ocorrer e acabe causando um retrabalho ainda maior no futuro. Dessa forma, o ideal é sempre solucionar a causa raiz, mesmo que no momento do erro isso signifique gastar mais tempo.

Utilize nomes descritivos

Nomear bem as variáveis, funções ou classes facilita a leitura e o entendimento do código. Nomes confusos fazem com que os desenvolvedores percam mais tempo tentando entender para que serve cada trecho de código. Dessa forma, vale escrever nomes descritivos, ainda que signifique ter um nome mais longo.

Abaixo temos um exemplo disso. Se uma variável é nomeada "X", não há como entender seu propósito. "Total" já é um nome melhor, mas ainda não descritivo o suficiente. Finalmente, "totalDeRegistros" já é um nome que nos permite ter uma ideia do propósito da variável sem precisar ler o restante do código que estivesse ao seu redor.

Sendo assim, o exercício a ser feito para seguir esse princípio é o de ler todos nomes definidos e refletir se para cada um deles é possível entender o propósito sem a necessidade de entender o restante do contexto (ver Figura 3).

Nomes Descritivos

Figura 3. Nomes Descritivos.

Siga as convenções

Se no início do projeto foram definidas convenções siga-as. Coisas como por exemplo usar camelCase para nomes de variáveis, ou escrever constantes em maiúsculo, ou mesmo convenções de idioma. Seguir as convenções pré-estabelecidas ajuda a manter o código fácil de entender para todos os membros de uma equipe, inclusive os mais novos, além de criar um padrão reconhecível.

Para seguir tal princípio, basta tomar o cuidado de seguir as convenções ao escrever novos trechos de código. E para os trechos já implementados, verificar se todos seguem os mesmos padrões.

No exemplo abaixo (Figura 4), podemos ver que cada uma das três funções descritas utiliza convenções diferentes.

Utilização de Diferentes Convenções

Figura 4. Utilização de Diferentes Convenções.

O mais correto, portanto, seria escolher uma das convenções e segui-la consistentemente (Figura 5).

Escolhend uma Convenção

Figura 5. Escolhend uma Convenção.

Don’t Repeat Yourself (DRY)

Em português, "não se repita". Evite repetições de código. Se existe um trecho que é necessário em muitos lugares, este deverá ser transformado em uma função, módulo, ou reescrito de alguma outra forma que permita reusabilidade.

Dessa forma, para seguir esse princípio os desenvolvedores devem procurar no projeto, manualmente ou através de ferramentas automatizadas, por trechos de código que sejam frequentemente repetidos. Essa repetição deve então ser removida, através de alguma das formas citadas.

Escreva funções pequenas e com apenas um objetivo

Funções menores e com poucas responsabilidades são mais fáceis de serem entendidas e reutilizadas. Também fica mais fácil encontrar quaisquer problemas e mudar comportamentos.

Sendo assim, se uma dada função possuí várias responsabilidades, é ideal separar essas responsabilidades entre múltiplas funções. Abaixo é possível ver um exemplo (Figura 6), em que uma função sozinha cuidava de todo um fluxo completo, e poderia ser dívida em múltiplas funções diferentes.

Funções Pequenas e com Apenas um Objetivo

Figura 6. Funções Pequenas e com Apenas um Objetivo.

Uma última dica válida, é que no caso de projetos grandes já em andamento, as vezes pode ser difícil analisar tudo manualmente para ver se os princípios estão sendo seguidos. Para facilitar esse trabalho, podem ser utilizadas as chamadas ferramentas de análise de código estático, que vão conseguir identificar a maior parte dos problemas mencionados automaticamente.

No livro, Martin cita diversos outros princípios. Alguns deles se referindo a aspectos mais complexos da programação, como por exemplo paralelismo. E também a aspectos que não são diretamente do código, como por exemplo estrutura de pastas e arquivos (MARTIN, 2014).

O significado do bom código pode ser subjetivo, mas os princípios do Clean Code são amplamente aceitos pela comunidade desde que foram estabelecidos, e se seguidos à risca certamente tendem a propiciar um aumento significativo na qualidade do produto em questão, dito que esta pode ser diretamente influenciada pela qualidade interna do software (FOWLER, 2019).

Referências Bibliográficas

  • MARTIN, Robert. Clean Code: A Handbook of Agile Software Craftsmanship. Nova Jersey: Prentice Hall PTR, 2014.
  • FOWLER. Is High Quality Software Worth the Cost? Martin Fowler, 2019. Disponível em: https://martinfowler.com/articles/is-quality-worth-cost.html. Acesso em 28 de jul. De 2021.
  • Estratégias e Governança Digital
    • Secretaria de Governo Digital
    • Sistema de Administração dos Recursos de Tecnologia da Informação (Sisp)
      • Governança de Talentos
      • Autodiagnóstico - iGOVSISP
      • Comissão de Coordenação do SISP - CCSISP
      • Guia do Gestor
      • Sobre o SISP
    • Transformação Digital
      • Trajetória da transformação digital
      • Ferramentas
      • O que oferece?
      • Lista Serviços Digitais
      • Central de Qualidade
    • Planos de Transformação Digital
      • PTDs Vigentes
      • Kit de Elaboração PTD
      • Modelo Gestão Risco
    • Estratégia Nacional de Governo Digital
      • Perguntas Frequentes
      • Comitê
    • Estratégia Federal de Governo Digital
      • Um Governo Centrado no Cidadão e Inclusivo
      • Um Governo Integrado e Colaborativo
      • Um Governo Inteligente e Inovador
      • Um Governo Confiável e Seguro
      • Um Governo Transparente, Aberto e Participativo
      • Um Governo Eficiente e Sustentável
      • Monitoramento EFGD
      • Monitoramento EFGD 2024-2027
      • EFGD 2024 - 2027
      • Contratação de Soluções de TIC
      • EFGD 2024 - 2027
    • Rede Nacional de Governo Digital
      • Mapa
      • Guia: 10 passos para a transformação digital em estados e municípios
      • Municípios
    • Rede Federal de Ensino
    • Startup GOV.BR
      • Guia - GPS
    • Planos de Transformação Digital - IFES (CGREP / Altino / DEZ-2025)
      • Kit de Elaboração PTD
      • Modelo Gestão Risco
      • Catálogo de Serviços - IFES
  • Plataformas e Serviços Digitais
    • Conta GOV.BR
    • Ferramenta de Avaliação
      • Links
    • Ferramenta de Automação
    • Conecta GOV.BR
    • Protocolo GOV.BR
    • Software Público
    • Assinatura Eletrônica
    • Rede Nacional de Governo Digital - Rede GOV.BR
    • Manual de Edição: site Governo Digital
    • Regras para Editores de Conteúdo gov.br
    • Agenda gov.br
  • Identidade
    • Identificação do Cidadão e Carteira de Identidade Nacional
      • Serviço de Identificação do Cidadão
      • Imagens
      • Câmara Executiva Federal de Identificação do Cidadão (CEFIC)
      • Dúvidas Frequentes sobre a CIN
      • Antiga Carteira de Identidade Nacional CIN
      • Legislação
    • Identidade Digital para Gestores Públicos
      • Programa Balcão GOV.BR
      • Dúvidas Frequentes do Ecossistema da Identidade Digital GOV.BR
      • Orientações sobre os critérios de segurança adotados na Conta GOV.BR
    • Conta gov.br
      • O que é a conta gov.br?
      • Onde usar a conta gov.br
      • Níveis da conta gov.br
      • Segurança da conta
      • Vídeos tutoriais
      • Ajuda da conta gov.br
      • Termo de Uso e Aviso de Privacidade
      • Exclusão da conta gov.br
    • Assinatura Eletrônica
      • Saiba mais sobre a assinatura eletrônica
      • Assinatura Eletrônica para Órgãos
      • Importar certificados gov.br no Adobe Acrobat Reader
    • Carteira de documentos digitais
    • Gerenciar o uso dos seus dados pessoais
    • Prova de Vida
  • Acessibilidade e Usuário
    • Atendimento gov.br
      • Dúvidas na conta gov.br
      • Dúvidas na assinatura gov.br
      • Dúvidas no aplicativo gov.br
      • Dúvidas nos dados cadastrais
      • Atendimento Presencial
      • Integração dos Serviços Estaduais
    • Acessibilidade Digital
      • Modelo de Acessibilidade
      • Ferramentas
      • Padrões Web em Governo Eletrônico
      • Referências e Modelos de Implementação
      • Material de apoio
      • Recursos de Acessibilidade
      • ABNT NBR 17225 - Acessibilidade em Conteúdo e Aplicações Web
      • ABNT NBR 17060 - Acessibilidade em Dispositivos Moveis
      • Cursos
    • Experiência do Usuário
    • VLibras
  • Contratações de TIC
    • Catálogos de Soluções de TIC com Condições Padronizadas
      • Arquivos
      • Catálogo de Soluções de TIC com Condições Padronizadas (Adobe)
    • Compras de TIC
    • Legislação
      • Processo de Contratação de Soluções de TIC Regido Pela Lei n° 14.133, de 2021
      • Processo de Contratação de Soluções de TIC Regido Pela Lei n° 8.666, de 1993
      • Análise de Alçadas Regido Pela Lei n° 14.133, de 2021
      • Legislação Aplicada à Contratação de TIC
      • Modelo de Contratação de Software e Serviços em Nuvem
      • Modelo de Contratação e Gestão de Estações de Trabalho
      • Modelo de Contratação de Serviços de Desenvolvimento, Manutenção e Sustentação de Software
      • Modelo de Contratação de Serviços de Outsourcing de Impressão
      • Modelo de Contração de Serviços de Operação de Infraestrutura e de Atendimento a Usuários de TIC
      • Modelo de Composição de Preços nas Contratações com Empresas Públicas Federais
      • Orientações - Contratos Baseados em UST
      • Todos os Modelos, Diretrizes e Orientações para Contratação de Soluções de TIC
      • Orientações - Contratos Baseados em UST
    • Orientações e Apoio Especializado
      • Conceito de Solução de TIC
      • Informações e Orientações sobre Análise de Alçadas
      • Pedidos de Excepcionalidade para Contratação de TIC
      • Central de Serviços e Suporte do SISP
      • Capacitações
      • Templates de Artefatos para Contratação e Lista de Verificação
      • FAQ
      • Central de Serviços e Suporte do SISP (C3S)
    • Capacitações
  • Privacidade e Segurança
    • Centro de Excelência em Privacidade e Segurança (CEPS GOV.BR)
      • Vídeos Educativos
      • Jogos Educativos
    • Centro Integrado de Segurança Cibernética (CISC GOV.BR)
    • Framework, Guias e Modelos
    • PPSI 2.0
    • Webnario
  • Infraestrutura Nacional de Dados
    • Interoperabilidade
      • Conecta gov.br
    • Catálogo Nacional de Dados
    • Governança de Dados
    • Informações geoespaciais
    • Ambiente Tecnológico
      • Nuvem
      • Data Centers
      • Infovia
    • Decisão Baseada em Dados
      • Recomendação de serviços
      • Notificação personalizada
      • Caixa Postal Digital do Cidadão
    • Inteligência Artificial
      • imagens
      • Publicações
    • Qualificação de Endereços
  • Capacitação
    • Capacita GOV.BR
    • Eventos e Prêmios
  • Legislação
  • Notícias
  • Mapa do Site
Redefinir Cookies
Redes sociais
  • Instagram
  • Twitter
Acesso àInformação
Todo o conteúdo deste site está publicado sob a licença Creative Commons Atribuição-SemDerivações 3.0 Não Adaptada.
Voltar ao topo da página
Fale Agora Refazer a busca