C# - Escrevendo um código elegante
Hoje vou apresentar algumas dicas para escrever um código C# mais elegante. |
Escrever código não é uma tarefa fácil e, quando se trata de escrever código de qualidade, torna-se ainda mais difícil.
Algo que devemos lembrar é que na programação temos várias maneiras de fazer algo e, desde que funcione, não significa que essa maneira seja certa ou errada. Mas além de simplesmente “funcionar”, nossa aplicação deve ser coesa e conter uma boa sintaxe.
Para atingir este objetivo a seguir vou apresentar alguns exemplos de como melhorar ainda mais sua escrita na linguagem C# e aumentar a qualidade do seu código.
Convenções de Nomenclatura
Não existe uma norma padrão que deve ser obrigatoriamente usada na padronização de código. Na verdade existem várias normas e nenhuma delas esta totalmente errada ou totalmente certa. Seguir alguma regra é melhor do que não seguir nenhuma, assim o importante é você adotar uma abordagem e segui-la.
Se individualmente a padronização já é difícil imagem em uma equipe de desenvolvedores trabalhando no mesmo projeto ?
Quando se tem uma equipe com diferentes habilidades e gostos é mais difícil obter uma padronização pois tem que se gastar um tempo para convencer todos a seguir os mesmos padrões.
As convenções de nomenclatura referem-se à declaração de nomes de objetos. Você deve seguir alguma convenção de nomenclatura para ter um código agradável e coerente ao nomear seus objetos.
Aqui não existe uma regra universal que deve sempre ser seguida mas em geral para declarar uma variável que retorna uma única entidade/objeto, usamos um nome simples.
Para declarar uma variável que retorna múltiplas entidades/objetos, podemos pluralizar adicionar o sufixo “List” para que possamos identificar facilmente que ela retornará uma lista de classes/objetos:
Para declarar uma variável privada utilize o sublinhado (_)
Outra regra geral é usar a seguinte padronização :
1. Usar
PascalCase
para nomes de classes
2. Usar PascalCase para nomes de métodos
3. Usar CamelCase para variáveis e parâmetros de métodos
CamelCase : É a denominação em inglês para a prática de escrever palavras compostas ou frases, onde a primeira letra da primeira palavra é iniciada com minúscula e unidas sem espaços.
PascalCase : Escreve palavras compostas ou frases montadas com palavras onde a primeira letra de cada palavra é iniciada com maiúscula.
A seguir temos uma tabela com os recursos e a indicação para padronização a ser aplicada:
Nome do recurso | Case a ser aplicado |
Variáveis | camelCase |
Classes | PascalCase |
Construtor | PascalCase |
Propriedades | PascalCase |
Delegate | PascalCase |
Enum | PascalCase |
Argumentos | camelCase |
Método | PascalCase |
Constantes | PascalCase |
Campo | camelCase |
Otimização da sintaxe usada
Se você conhece a linguagem C# sabe que existem mais de uma forma de realizar uma tarefa e neste quesito sempre podemos melhorar o código otimizando a sintaxe usada.
Vejamos alguns exemplos:
1- Métodos que retornam um resultado
2- Verificar por condições de null ou vazio (empty)
3- Verificar um valor null
A verificação do Null a partir do C# 9.0 pode usar a palavra-chave And e o Pattern Not.
A partir do C# 9.0, podemos combinar a expressão is com o padrão lógico not, que é poderoso se você quiser verificar se um objeto NÃO é nulo. Antes do C# 9.0 você tinha que usar a expressão is como abaixo para verificar se um objeto não é nulo:
if (!(nome is null)) { }
|
Para facilitar a legibilidade e o otimizar a sintaxe podemos usar a sintaxe abaixo a partir do C# 9.0:
if (nome is not null)) { }
|
4- Concatenação de strings
5- Usando a instrução switch (a partir do C# 8.0)
Validação de tipos de dados primitivos
Com a correria do
dia a dia, às vezes esquecemos que existem métodos disponíveis para validar
tipos de dados primitivos como System.Int32.
Quando você precisar fazer essas validações, evite usar métodos personalizados.
Em vez disso, use os métodos já disponíveis na linguagem para isso.
Otimizando consultas com LINQ
A LINQ é o nome de um conjunto de tecnologias com base na integração de recursos
de consulta diretamente na linguagem C#.
A LINQ simplifica as consultas oferecendo um modelo consistente para trabalhar
com dados em vários tipos de fontes e formatos. Em uma consulta LINQ, você está
sempre trabalhando com objetos. Você usa os mesmos padrões básicos de
codificação para consultar e transformar dados em documentos XML, bancos de
dados SQL, conjuntos de dados ADO.NET, coleções .NET e qualquer outro formato
para o qual um provedor LINQ esteja disponível.
Abaixo vamos obter uma lista de “Bons Preços” passando por uma lista de
“Empresas” que possuem “Produtos” com vários “Preços de Mercado”.
Se o preço de mercado for menor que 100, adicionamos o produto à lista de bons
preços e o devolvemos no final da expressão.
Abaixo temos uma abordagem padrão que pode ser considerada um tanto procedural :
public
BomPreco GetBomPrecos(List<Empresa>
empresas) { BomPreco bomPrecos = new BomPreco();
foreach
(Empresa emmpresa in empresas) |
Podemos melhorar este código usando LINQ:
No código acima podemos também pode usar a seguinte consulta :
var resultado
= from empresa in empresas from produto in empresa.Produtos where produto.ValorMercado < 100 select produto; bomPrecos.Produtos = resultado.ToList(); |
Independente se você é novo na linguagem C# ou não você sempre vai poder melhorar e otimizar o seu código para ter um código mais elegante.
E estamos conversados...
"O Senhor
estabeleceu o seu trono nos céus, e como rei domina sobre tudo o que existe."
Salmos 103:19
Referências:
ASP .NET - Gerando QRCode com a API do Google
C# 9.0 - Instruções de nível superior
ASP.NET Core Web API - Apresentando API Analyzers
ASP.NET Core - Usando o token JWT com o Swagger
Gerando a documentação da Web API com Swagger