Clean Code em C#: princípios e exemplos na prática

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Clean Code em C#: princípios e exemplos na prática

\n

Código limpo (Clean Code) não é apenas uma tendência moderna no desenvolvimento, mas uma abordagem fundamental que determina o sucesso de qualquer projeto de software em C#. Escrever código que seja fácil de ler, manter e expandir é uma habilidade que diferencia o profissional do iniciante. Neste artigo, vamos analisar os princípios-chave do Clean Code com exemplos práticos para desenvolvedores .NET.

\n\n

Por que o Clean Code é importante para projetos C#

\n

No ecossistema .NET, onde os projetos frequentemente duram anos e passam de uma equipe para outra, a legibilidade do código torna-se um fator crítico. O código limpo permite:

\n
    \n
  • Reduzir o tempo de depuração e refatoração
  • \n
  • Diminuir a quantidade de bugs devido a uma lógica clara
  • \n
  • Melhorar o trabalho em equipe e as revisões de código
  • \n
  • Aumentar a produtividade do desenvolvimento a longo prazo
  • \n
\n\n

Princípio 1: Nomes significativos e estilo consistente

\n

O primeiro passo para um código limpo é a nomeação correta. Os nomes de variáveis, métodos e classes devem refletir sua finalidade, e não a forma de implementação.

\n\n

Exemplo ruim

\n
public class Data\n{\n    public int a { get; set; }\n    public string b { get; set; }\n    public void Do()\n    {\n        // alguma lógica\n    }\n}
\n\n

Exemplo bom

\n
public class Customer\n{\n    public int Id { get; set; }\n    public string FullName { get; set; }\n    public void SendWelcomeEmail()\n    {\n        // lógica de envio de e-mail de boas-vindas\n    }\n}
\n

Use camelCase para variáveis locais, PascalCase para classes e métodos. Evite abreviações, a menos que sejam amplamente aceitas (por exemplo, Id em vez de Identifier).

\n\n

Princípio 2: Métodos pequenos com uma única responsabilidade

\n

Cada método deve executar exatamente uma tarefa. Isso torna o código testável e reutilizável. Se um método tiver mais de 15-20 linhas, é hora de dividi-lo.

\n\n

Exemplo ruim

\n
public void ProcessOrder(Order order)\n{\n    // Validação\n    if (order.Total <= 0) throw new Exception("Invalid order");\n    // Salvar no BD\n    _context.Orders.Add(order);\n    _context.SaveChanges();\n    // Enviar e-mail\n    var emailService = new EmailService();\n    emailService.Send(order.CustomerEmail, "Order confirmed");\n}
\n\n

Exemplo bom

\n
public void ProcessOrder(Order order)\n{\n    ValidateOrder(order);\n    SaveOrder(order);\n    SendConfirmationEmail(order);\n}\n\nprivate void ValidateOrder(Order order)\n{\n    if (order.Total <= 0)\n        throw new ArgumentException("Order total must be positive");\n}\n\nprivate void SaveOrder(Order order)\n{\n    _context.Orders.Add(order);\n    _context.SaveChanges();\n}\n\nprivate void SendConfirmationEmail(Order order)\n{\n    var emailService = new EmailService();\n    emailService.Send(order.CustomerEmail, "Order confirmed");\n}
\n

Essa abordagem permite substituir a lógica facilmente, escrever testes unitários para cada etapa e encontrar erros rapidamente.

\n\n

Princípio 3: Evite números e strings mágicos

\n

Números e strings mágicos são uma das principais causas de código difícil de ler. Coloque-os em constantes ou arquivos de configuração.

\n\n

Exemplo ruim

\n
if (user.Role == 3)\n{\n    // lógica para administrador\n}\nif (DateTime.Now.Hour > 18)\n{\n    // desconto noturno\n}
\n\n

Exemplo bom

\n
private const int AdminRoleId = 3;\nprivate const int EveningDiscountStartHour = 18;\n\nif (user.RoleId == AdminRoleId)\n{\n    // lógica para administrador\n}\nif (DateTime.Now.Hour > EveningDiscountStartHour)\n{\n    // desconto noturno\n}
\n

Para cenários mais complexos, use enumerações (enum) e classes de configuração.

\n\n

Princípio 4: Princípio DRY (Don't Repeat Yourself)

\n

Duplicação de código é

Blogs

Book Recommendations