Close Menu
Código Simples .NETCódigo Simples .NET
    Facebook X (Twitter) Instagram
    Trending
    • Context engineering: quando o problema deixa de ser prompt e vira arquitetura
    • Clean Code (2ª edição): o que mudou e o que continua valendo
    • Sunk Cost em Arquitetura de Software: como evitar que meses de investimento virem uma armadilha
    • Guia Profissional de Prompting – Domando um ChatGPT Preguiçoso: Como Obter Respostas Completas, Profundas e Confiáveis
    • A Anatomia de um Prompt: Como Falar com a IA Como um Profissional de Tecnologia
    • Conheça os tipos de registros DNS: o guia completo sobre A, AAAA, NS, CNAME, MX, PTR, SOA, TXT, SRV, SPF e muito mais
    • Cache além do básico: por que LRU e TTL precisam andar juntos
    • Quando usar arquitetura modular — e quando não usar
    Facebook X (Twitter) Instagram
    Código Simples .NETCódigo Simples .NET
    Código Simples .NETCódigo Simples .NET
    Home»Dicas»O que define um código limpo?

    O que define um código limpo?

    Jhonathan SoaresBy Jhonathan Soares11 de abril de 20163 Mins Read Dicas
    Share
    Facebook Twitter LinkedIn WhatsApp Copy Link

    Esses dias me perguntaram sobre o que eu acho sobre “O que é código limpo, ou clean code?”

    Acredito que deva existir 1000 respostas diferentes e corretas sobre este assunto, porém vou dar meu parecer:

    Não há definição formal e duvido que um dia vá existir (é sintomático que não exista verbete na Wikipedia). Ele é subjetivo. Sempre que alguém disser o que é, desconfie. Mas é claro que algumas observações podem ser feitas independente de opinião. É óbvio que elas são vagas, não vão ajudar muito a definir com clareza o que é o termo mas também não farão presunções tendenciosas.

    • O fluxo de execução da aplicação é facilmente entendível, não importa em que paradigma, (não entenda fluxo só como o fluxo imperativo).
    • Os diversos objetos (nada a ver com OOP) tem relacionamento claramente definidos e é fácil percebê-los.
    • O papel e responsabilidade de cada participante da aplicação (classes, funções, variáveis, etc.) são claros, possivelmente com nome bem escolhido.

    No momento não consigo lembrar de nada mais que não seja específico e subjetivo demais para ser aplicado como uma forma geral de entendimento do assunto.

    Então o código precisa:

    • Ser fácil de entender por quem nunca o tinha visto antes
    • Possibilita manutenção sem grandes sobressaltos.
    • Funciona corretamente.

     

    Claro que espera-se que o leitor do código seja um desenvolvedor capacitado, quem entenda bem a linguagem onde está escrito e entenda os fundamentos da computação. A não ser que um código seja escrito para fins didáticos não é obrigação do código limpo explicar de qualquer forma seu funcionamento para leigos (mesmo aqueles que são remunerados como desenvolvedores, isto existe, e muito).

    Aí podemos começar definir algumas coisas mais específicas que ajudam cumprir estes três requisitos destacados acima:

    • As unidades de código devem ser curtas e ter apenas uma responsabilidade.
    • As partes “públicas” (a API) devem ser claras (óbvias, sem surpresas) e concisas (faz o mínimo necessário).
    • As estruturas de dados e algoritmos devem funcionar como o esperado.
    • O código deve ser facilmente verificável.
    • Códigos devem ser organizados e expressivos (concisamente indica a sua intenção)

    Além disto provavelmente está indo além da definição básica e começa entrar no campo subjetivo.

    Um livro muito interessante onde o primeiro capítulo do livro está disponível como artigo , é muito recomendado para uma leitura. No livro a cada página lida você vai se aprofundando e ele vai sugerindo certas coisas que são discutíveis. O livro não é ruim, todo mundo deveria lê-lo principalmente para abrir a sua mente e fazer você debater sobre seus conceitos do que é certo e/ou errado.


    Só um adendo para não passar a falsa impressão que 100% do código escrito deva ser limpo. Claro que isto seria ideal mas há certos domínios em conjunto com certos requisitos que conflita com o conceito de código limpo. Pode ser raro, não ser aplicável em determinados tipos de projeto, mas existe situações assim. Como em tudo, você deve saber quando perseguir um ideal e quando ser pragmático e resolver o problema da forma mais adequada. Talvez no final das contas pode-se resumir à seguinte afirmação: “Código limpo é aquele que é escrito da melhor maneira possível analisando todas as variáveis de cenário, negócio, requisitos e experiência de quem o escreveu”.

    O que acharam? Deixa aí nos comentários sua opinião!

    Share. Facebook Twitter LinkedIn Telegram WhatsApp Copy Link
    Jhonathan Soares
    • Website
    • Facebook
    • X (Twitter)
    • LinkedIn

    Criador do blog Código Simples e com mais 15 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist.

    Posts Relacionados

    Clean Code (2ª edição): o que mudou e o que continua valendo

    Dicas Gestão & Produtividade 12 de fevereiro de 20266 Mins Read

    Conheça os tipos de registros DNS: o guia completo sobre A, AAAA, NS, CNAME, MX, PTR, SOA, TXT, SRV, SPF e muito mais

    Dicas 8 de outubro de 20257 Mins Read

    Mais de 200 livros de programação gratuitos em português

    Cursos Dicas 16 de setembro de 202512 Mins Read
    Newsletter

    Digite seu endereço de e-mail para receber notificações de novas publicações por e-mail.

    Junte-se a 25mil outros assinantes
    Posts recentes
    • Context engineering: quando o problema deixa de ser prompt e vira arquitetura
    • Clean Code (2ª edição): o que mudou e o que continua valendo
    • Sunk Cost em Arquitetura de Software: como evitar que meses de investimento virem uma armadilha
    • Guia Profissional de Prompting – Domando um ChatGPT Preguiçoso: Como Obter Respostas Completas, Profundas e Confiáveis
    • A Anatomia de um Prompt: Como Falar com a IA Como um Profissional de Tecnologia
    Categorias
    • Arquitetura (31)
      • Microsserviços (3)
      • Testes (2)
    • Asp.net (120)
      • C# (89)
      • Mvc (13)
    • Banco de dados (93)
      • NoSql (60)
      • Sql (38)
    • Boas práticas (34)
      • Gestão & Produtividade (4)
      • Metodologias Ágeis (6)
    • Cursos (53)
    • Dicas (108)
    • Front-End (92)
    • IA (7)
    • Linux (6)
    • NodeJS (4)
    • Post do Leitor (9)
    • Python (5)
    • Seo (12)
    • Tecnologia (30)
      • ITIL (1)
      • Padrões de Projeto (4)
    • Testes (2)

    VEJA TAMBÉM

    Cursos
    12 de fevereiro de 20166 Mins Read

    1000 livros gratuitos sobre programação!

    Olha que dica bacana! A pagina só com livros sobre programação é mantida no GitHub…

    30 APIs Gratuitas para desenvolvedores

    Código Simples no Facebook
    Código Simples no Facebook
    • Popular
    • Recente

    1000 livros gratuitos sobre programação!

    12 de fevereiro de 2016

    Google lança versão “invisível” do reCAPTCHA!

    10 de março de 2017

    Mini curso de HTML5 oferecido pela Microsoft

    30 de janeiro de 2014

    O que significa ( !important ) na declaração do CSS ?

    5 de fevereiro de 2014

    Programa para supercompactar arquivos. KGB Archiver.

    6 de fevereiro de 2014

    Context engineering: quando o problema deixa de ser prompt e vira arquitetura

    16 de abril de 2026

    Clean Code (2ª edição): o que mudou e o que continua valendo

    12 de fevereiro de 2026

    Sunk Cost em Arquitetura de Software: como evitar que meses de investimento virem uma armadilha

    4 de fevereiro de 2026

    Guia Profissional de Prompting – Domando um ChatGPT Preguiçoso: Como Obter Respostas Completas, Profundas e Confiáveis

    30 de outubro de 2025

    A Anatomia de um Prompt: Como Falar com a IA Como um Profissional de Tecnologia

    30 de outubro de 2025
    Nosso Feed
    • RSS - Posts
    Fique por dentro

    Digite seu endereço de email para assinar este blog e receber notificações de novas publicações por email.

    Facebook X (Twitter) Instagram LinkedIn

    Type above and press Enter to search. Press Esc to cancel.

    Vá para versão mobile