Encapsulamento no C#: Cofre do Código Seguro e Profissional
Domine Propriedades em C#: Transforme e Organize Seu Código
As propriedades em C# são uma das formas mais eficientes e elegantes de gerenciar o acesso e a modificação de dados em uma classe. Elas substituem o uso direto de campos privados (ou _fields_), que podem facilmente se tornar desorganizados e difíceis de manter. Ao utilizar propriedades, você ganha controle total sobre como os dados são lidos e escritos, garantindo segurança
🛡️ Segurança em SignalR: Autenticação e Autorização!Descubra como implementar JWT e autorização com roles e claims no SignalR, garantindo segurança e controle de acessos em tempo real., flexibilidade e clareza no código. Se você quer manter seu código organizado, protegido contra inconsistências e fácil de utilizar, dominar as propriedades é essencial.
Tabela de Conteúdo🔗
2. Propriedades Automáticas: Simplicidade e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. Rapidez
3. Propriedades com get e
📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos.
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. set Personalizados
4. Modificadores de Acesso em Propriedades
5. Expression-Bodied Properties: Elegância em Uma Linha
7. Propriedades Somente Leitura (Read-Only)
8. Validação
Como Assegurar Validação e Cobertura de Código em Projetos LINQAprenda estratégias avançadas para testar consultas LINQ, garantindo cobertura de código e confiabilidade com ferramentas e práticas recomendadas. com Propriedades: Diga Não ao Dados Inválidos!
9. Propriedades Computadas: Quando
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. o Valor é uma Fórmula Mágica
10. Exemplo Prático
📝 Logging com Serilog: Registre Tudo como um Detetive de Bugs!Aprenda a usar Serilog em .NET para registrar logs estruturados, identificar erros e enriquecer informações, transformando seu código num enigma solucionável.: Classe "Usuário" com Propriedades Profissionais
11. Dicas e Boas Práticas
🔢 Operadores Aritméticos: Faça Cálculos como uma Calculadora Humana!Aprenda a dominar operadores aritméticos em C# com exemplos práticos, técnicas de cálculo e dicas para evitar erros e maximizar resultados.
Por Que Usar Propriedades?🔗
No C#, as propriedades são fundamentais para garantir que seus objetos mantenham valores
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. coerentes e sejam fáceis de manter. Se você expõe um campo (field) publicamente, qualquer código externo pode alterar seu valor
🗂️ Dicionários: Acesse Dados por Chaves como um Mestre dos HashMaps!Aprenda a usar dicionários em C# de modo prático e eficiente. Nosso tutorial mostra criação, acesso e otimização para manipular dados com segurança. sem restrições, o que pode levar a inconsistências. Com propriedades, você tem controle total:
- Validação
Como Assegurar Validação e Cobertura de Código em Projetos LINQAprenda estratégias avançadas para testar consultas LINQ, garantindo cobertura de código e confiabilidade com ferramentas e práticas recomendadas. de dados: Antes de aceitar qualquer alteração, você pode validar os dados. - Proteção
🛡️ Segurança em SignalR: Autenticação e Autorização!Descubra como implementar JWT e autorização com roles e claims no SignalR, garantindo segurança e controle de acessos em tempo real. de acesso: Você pode definir permissões separadas para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! leitura (get) e
📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos.
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. escrita (set). - Flexibilidade: Se no futuro for necessário adicionar lógica extra, você pode fazê-lo sem alterar a interface
📜 Interfaces: Contratos que Garantem a Ordem no Universo OOP!Descubra como as interfaces em C# funcionam como contratos que garantem implementações flexíveis e robustas, facilitando o design e testes de sistemas. da classe.
Imagine uma classe de conta bancária onde você não quer permitir que o saldo seja alterado para um valor negativo sem passar por uma validação
Como Assegurar Validação e Cobertura de Código em Projetos LINQAprenda estratégias avançadas para testar consultas LINQ, garantindo cobertura de código e confiabilidade com ferramentas e práticas recomendadas.. Propriedades permitem encapsular essa regra de negócio de forma clara e segura.
Propriedades Automáticas: Simplicidade e Rapidez🔗
Quando você não precisa de validação
Como Assegurar Validação e Cobertura de Código em Projetos LINQAprenda estratégias avançadas para testar consultas LINQ, garantindo cobertura de código e confiabilidade com ferramentas e práticas recomendadas. ou processamento adicional antes de armazenar um valor, as propriedades automáticas são a solução ideal. Elas permitem declarar a propriedade sem a necessidade de criar
📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos. um campo privado explicitamente - o compilador faz isso para você nos bastidores.
Exemplo:
public class Cliente
{
public string Nome { get; set; }
public int Idade { get; set; }
}
Neste caso, Nome e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. Idade não exigem lógica adicional, então
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. a sintaxe curta das propriedades automáticas é perfeita.
Vantagens:
- Sintaxe curta e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. clara. - Elimina a necessidade de campos privados explícitos.
- Código limpo e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. fácil de manter.
Propriedades com get e set Personalizados🔗
Para cenários onde você precisa de lógica específica, como validação
Como Assegurar Validação e Cobertura de Código em Projetos LINQAprenda estratégias avançadas para testar consultas LINQ, garantindo cobertura de código e confiabilidade com ferramentas e práticas recomendadas., cálculo ou transformações antes de armazenar ou expor um valor, use propriedades com blocos get e
📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos.
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. set completos.
Exemplo: Vamos garantir que a idade nunca seja negativa, definindo-a como zero se um valor
🗂️ Dicionários: Acesse Dados por Chaves como um Mestre dos HashMaps!Aprenda a usar dicionários em C# de modo prático e eficiente. Nosso tutorial mostra criação, acesso e otimização para manipular dados com segurança. negativo for fornecido.
public class Pessoa
{
private int _idade; // campo privado
public int Idade
{
get
{
return _idade;
}
set
{
if (value < 0)
{
_idade = 0;
}
else
{
_idade = value;
}
}
}
}
Aqui, precisamos de um campo privado (_idade) para armazenar o valor internamente, já que estamos fazendo uma verificação
Como Assegurar Validação e Cobertura de Código em Projetos LINQAprenda estratégias avançadas para testar consultas LINQ, garantindo cobertura de código e confiabilidade com ferramentas e práticas recomendadas. antes de gravar.
Quando usar:
- Validação
Como Assegurar Validação e Cobertura de Código em Projetos LINQAprenda estratégias avançadas para testar consultas LINQ, garantindo cobertura de código e confiabilidade com ferramentas e práticas recomendadas. ou ajustes antes de escrever. - Cálculos ou formatações especiais antes de ler.
Modificadores de Acesso em Propriedades🔗
Outra grande vantagem das propriedades é a capacidade de controlar o acesso ao get e
📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos.
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. set separadamente. Por exemplo, em uma classe
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. de conta bancária, você pode permitir que o saldo seja lido publicamente, mas apenas métodos
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. internos possam alterá-lo:
public class ContaBancaria
{
public ContaBancaria(decimal saldoInicial)
{
Saldo = saldoInicial;
}
public decimal Saldo { get; private set; }
public void Depositar(decimal valor)
{
Saldo += valor;
}
public bool Sacar(decimal valor)
{
if (valor <= Saldo)
{
Saldo -= valor;
return true;
}
return false;
}
}
Observe que o get é público, mas
📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos.
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. o set é privado (private set). Isso significa que apenas métodos
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. dentro da classe podem alterar o valor de Saldo, enquanto
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! qualquer código externo pode apenas lê-lo.
Expression-Bodied Properties: Elegância em Uma Linha🔗
Se a lógica do get ou
📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos.set for
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! simples, você pode usar a sintaxe expression-bodied para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! deixar o código mais compacto. Por exemplo:
public class Produto
{
private decimal _precoUnitario;
private int _quantidadeEmEstoque;
public decimal ValorTotal => _precoUnitario * _quantidadeEmEstoque;
}
Aqui, ValorTotal é uma propriedade somente leitura que calcula o valor
🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio.
🗂️ Dicionários: Acesse Dados por Chaves como um Mestre dos HashMaps!Aprenda a usar dicionários em C# de modo prático e eficiente. Nosso tutorial mostra criação, acesso e otimização para manipular dados com segurança. total do estoque. A sintaxe => torna o código mais limpo e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. direto.
Init-Only Setters (C# 9+)🔗
Desde o C# 9, é possível criar
📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos. propriedades com init; em vez de set;. Isso permite definir o valor apenas durante a inicialização do objeto (no construtor
🔑 Construtores: Inicialize Objetos como um Arquiteto de OOP!Descubra como os construtores em C# estruturam objetos, garantindo inicialização segura e promovendo boas práticas de desenvolvimento orientado a objetos. ou em um inicializador de objeto), mas não depois. É uma ótima forma de criar objetos imutáveis
📝 Strings em C#: Manipule Textos como um Mestre dos Caracteres!Aprenda a dominar os segredos das strings em C# com técnicas de manipulação, concatenação, interpolação e boas práticas, impulsionando sua performance. sem precisar de múltiplos construtores
🔑 Construtores: Inicialize Objetos como um Arquiteto de OOP!Descubra como os construtores em C# estruturam objetos, garantindo inicialização segura e promovendo boas práticas de desenvolvimento orientado a objetos..
Exemplo:
public class Endereco
{
public string Rua { get; init; }
public string Cidade { get; init; }
}
Podemos fazer:
var meuEndereco = new Endereco
{
Rua = "Rua das Flores, 123",
Cidade = "São Paulo"
};
// Depois de criado, não podemos mudar `Rua` ou `Cidade`.
Isso deixa claro que, uma vez “montado” o objeto, seus valores
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. não podem mais ser alterados.
Propriedades Somente Leitura (Read-Only)🔗
Se você precisa apenas retornar um valor e não quer que ele seja alterado (nem mesmo durante a inicialização), pode criar
📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos. uma propriedade _somente leitura_. Basta não incluir o set. Exemplo:
public class Pedido
{
private decimal _valorTotal;
public decimal ValorTotal
{
get { return _valorTotal; }
}
public void AdicionarItem(decimal preco)
{
_valorTotal += preco;
}
}
Aqui, ValorTotal pode ser atualizado internamente pelos métodos
🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio.
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. de Pedido, mas
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. de fora é apenas leitura. Isso reforça o encapsulamento
🔒 Encapsulamento: Proteja Seus Dados como um Banco Suíço!Aprenda a proteger seus dados com encapsulamento em C#: técnicas e melhores práticas para um código seguro, modular e eficiente. do comportamento.
Validação com Propriedades: Diga Não aos Dados Inválidos!🔗
Adicione regras de negócio diretamente nos setters para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! garantir que os dados estejam sempre corretos:
private int _idade;
public int Idade
{
get => _idade;
set
{
if (value < 0 || value > 150)
throw new ArgumentException("Idade inválida!");
_idade = value;
}
}
Dica profissional: Use nameof() para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! mensagens de erro dinâmicas:
throw new ArgumentException($"{nameof(Idade)} deve ser entre 0 e 150.");
Propriedades Computadas: Quando o Valor é uma Fórmula Mágica🔗
Crie valores
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. dinâmicos sem armazenamento, usando propriedades computadas:
public decimal TotalCompra => Itens.Sum(item => item.Preco * item.Quantidade);
✅ Valores derivados de outros dados
✅ Cálculos simples (evite operações pesadas!)
Exemplo Prático: Classe "Usuário" com Propriedades Profissionais🔗
Vamos criar uma classe
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. Usuario que utiliza várias técnicas de propriedades:
public class Usuario
{
// Auto-propriedade com valor padrão
public string Nome { get; set; } = "Convidado";
// Propriedade com validação
private string _email;
public string Email
{
get => _email;
set
{
if (!value.Contains("@"))
throw new ArgumentException("E-mail inválido!");
_email = value;
}
}
// Propriedade computada
public string Saudacao => $"Olá, {Nome}! Seu e-mail é {Email}";
// Propriedade init-only
public DateTime DataCriacao { get; init; } = DateTime.UtcNow;
}
// Uso:
var usuario = new Usuario
{
Nome = "Carlos",
Email = "[email protected]"
};
Console.WriteLine(usuario.Saudacao); // "Olá, Carlos! Seu e-mail é [email protected]"
Checklist de Elegância:
✅ Sem campos privados expostos ✅ Validações centralizadas ✅ Código autoexplicativo ✅ Imutabilidade onde necessárioDicas e Boas Práticas🔗
- Nome de Propriedades: Use nomes claros e descritivos (e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. a convenção é _PascalCase_, ex.: NomeCliente,DataNascimento). - Evite Expor _Fields_ Privados: A não ser que você tenha um bom motivo, use propriedades. É mais seguro
🛡️ Segurança em SignalR: Autenticação e Autorização!Descubra como implementar JWT e autorização com roles e claims no SignalR, garantindo segurança e controle de acessos em tempo real. e flexível. - Validação
Como Assegurar Validação e Cobertura de Código em Projetos LINQAprenda estratégias avançadas para testar consultas LINQ, garantindo cobertura de código e confiabilidade com ferramentas e práticas recomendadas.: Se a validação
Como Assegurar Validação e Cobertura de Código em Projetos LINQAprenda estratégias avançadas para testar consultas LINQ, garantindo cobertura de código e confiabilidade com ferramentas e práticas recomendadas. for complexa, considere métodos ou classes auxiliares. Não torne seu setnum “livro de romance”! - Expression-Bodied: Ótimo para simplificar leituras e pequenas escritas, mas cuidado para não perder legibilidade
Programação Funcional e LINQ: Abordagem para Maior LegibilidadeDescubra como aplicar conceitos funcionais com LINQ em C# para criar códigos mais legíveis, simples, robustos e fáceis de manter.. - Mantenha o Código Coeso: Propriedades são apenas parte do _encapsulamento_. Combine-as com métodos
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. claros que representem as ações ou regras de negócio.
No final, o uso de propriedades é tudo uma questão de controle e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. organização. Se você adotar boas práticas
🔢 Operadores Aritméticos: Faça Cálculos como uma Calculadora Humana!Aprenda a dominar operadores aritméticos em C# com exemplos práticos, técnicas de cálculo e dicas para evitar erros e maximizar resultados. desde cedo, evitará dores de cabeça no futuro, quando precisar refatorar ou expandir o código. A ideia é não deixar campos privados soltos por aí - use as propriedades com sabedoria e consiga um código limpo, fácil de ler e de dar manutenção. 🎩✨
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.
Referências🔗
- .NET Documentation: learn.microsoft.com/pt-br/dotnet/
- Awesome .NET: github.com/quozd/awesome-dotnet
- C# Language Specification: learn.microsoft.com/pt-br/dotnet/csharp/language-reference/language-specification/
- GitHub: Microsoft/.NET: github.com/dotnet
- Microsoft Learn: C# e .NET: learn.microsoft.com/pt-br/dotnet/csharp/
há 11 months atrás
há 10 months atrás
há 10 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás