Author Archives: Diego Neves

ASP.NET Core

Validando dados com Fluent Validation


Fala galera, beleza? Vou apresentar uma maneira bem sucinta de validar os dados de modo server-side no ASP.NET Core usando o Fluent Validation. Para quem não conhece o Fluent Validation, trata se de uma excelente biblioteca disponível no .NET Framework para realizar validação de classes usadas como View Models, Commands (conceito do CQRS), DTOs ou até mesmo entidades de domínio. A validação ocorre usando o que o próprio framework define como Fluent Interface que nada mais é que construir as regras de validação com métodos encadeados e expressões lambdas, modo que todo desenvolvedor .NET já é acostumado a trabalhar. No caso do...
Continuar Lendo »
Arquitetura

Aplicando SOLID com C# – DIP (Dependency Inversion Principle)


Finalmente chegamos à última parte sobre SOLID e pra encerrar, vamos conversar sobre o DIP (Dependency Inversion Principle) ou Princípio da Inversão de Dependência. Seria injusto dizer que qualquer um dos princípios SOLID é mais importante que o outro. No entanto, provavelmente nenhum dos outros tem um efeito tão imediato e profundo em seu código do que o DIP. Cogitar desenvolver um software sem levar em conta esse princípio é comprometer o projeto violando boas práticas de arquitetura. Mantra ou Definição Módulos de alto nível não devem depender de módulos de baixo nível. Mas sim ambos devem depender de...
Continuar Lendo »
Arquitetura

Aplicando SOLID com C# – ISP (Interface Segregation Principle)


Chegamos a quarta parte da série sobre os padrões SOLID apresentados aqui no NET Coders. Hoje o assunto abordado será o ISP (Interface Segregation Principle) ou Princípio da Segregação de Interface. Uma pitada de Programação Orientada a Objetos Antes de entender o que é o ISP, vamos falar um pouco sobre POO (Programação Orientada a Objeto) e Interfaces. Um dos grandes paradigmas da POO diz que é muito melhor programar para uma abstração do que para uma implementação. O uso das interfaces torna o código menos acoplado, extensível e assim gerando menos problemas em manutenções ou adições de novas...
Continuar Lendo »
Arquitetura

Aplicando SOLID com C# – LSP (Liskov Substitution Principle)


Continuando com a nossa série de artigos sobre os padrões SOLID, o assunto aqui abordado será o LSP (Liskov Substitution Principle) ou em português Princípio da Substituição de Liskov. Eu diria que o LSP é mais uma questão de análise e questionamentos sobre o sistema do que propriamente “mão na massa” e adiante vamos entender o porquê. Esse conceito foi desenvolvido em um artigo científico de autoria de Barbara Liskov e apresentado em 1987, tendo sido publicado em 1994 em conjunto com Jannette Wing. A teoria original do artigo era: Se q(x) é uma propriedade demonstrável dos objetos x do tipo T. Então...
Continuar Lendo »
Arquitetura

Aplicando SOLID com C# – OCP


Dando continuidade ao estudo sobre os padrões SOLID, no primeiro artigo falamos sobre o SRP, agora na segunda parte, vamos conversar um pouco sobre OCP (Open Closed Principle), ou em português (Princípio Aberto-Fechado). O que se trata? Como o nome já sugere, o padrão OCP diz que uma classe ou método durante o desenvolvimento deve estar aberto para extensão e fechado para modificação quando necessário uma adição de funcionalidade, ou seja, o desenvolvedor visa diminuir a complexidade e riscos em manutenções futuras.  Eu diria que o OCP trabalha junto com o SRP, um complementa o outro, para implementar se faz...
Continuar Lendo »
Arquitetura

Aplicando SOLID com C# – SRP


A partir desse artigo, vamos conversar sobre um dos assuntos que mais gosto na orientação a objeto, os padrões SOLID. Não quero perder tempo falando tanto da história e como foi criado, no final de cada artigo, postarei algumas referências que explicam esses pontos com bastante clareza. Pretendo ser mais prático do que teórico oferecendo exemplos focados no dia-a-dia, mas claro, antes uma refrescada pra deixar bem claro do que se trata e pra que serve, beleza? Legal, mas o que é SOLID? Como gostava de brincar um professor que tive na faculdade, os padrões SOLID deixam o código mais sólido...
Continuar Lendo »
Entity Framework 6

Mapeamento com Entity Framework Code First (Fluent Api) – Parte 1


Fala galera, beleza? Vou demonstrar como modelar um pequeno contexto usando o Entity Framework 6.1 com mapeamento Fluent Api onde precisamos escrever um pouco mais de código, porém não sujamos nossas entidades de domínio com anotações. Como se trata de um artigo com tutorial, achei melhor dividir em duas partes… Mapeamento com Entity Framework Code First (Fluent Api) – Parte 1 Mapeamento com Entity Framework Code First (Fluent Api) – Parte 2   Qual a diferença entre Data Annotations e Fluent Api? Quando usado o mapeamento por Data Annotations, as propriedades das entidades POCO (Plain Old CLR Object) são decoradas com...
Continuar Lendo »
Entity Framework 6

Mapeamento com Entity Framework Code First (Fluent Api) – Parte 2


Depois de toda a configuração do contexto no Entity Framework visto na primeira parte do artigo, vamos focar nas entidades POCO e construir os relacionamentos entre elas com a abordagem Fluent Api. Antes de montar as relações de tabela, no projeto EntityFramewokEscola.DataAccess adicione uma pasta chamada Map, nessa pasta vamos criar as classes de mapeamento. Vamos iniciar já com um relacionamento N:N: Curso – Professor Regra: Um Curso pode ser ministrado por um ou muitos professores e um professor pode ministrar um ou muitos cursos: Veja a MER (Modelo Entidade Relacionamento) Dentro da pasta Map, crie uma classe chamada CursoMap, a mesma...
Continuar Lendo »
Arquitetura

Validando Domínios sem Exceptions


Fala galera, tranquilo? Hoje gostaria de compartilhar uma de ‘n’ formas que existe para validar uma entidade de domínio.  Em projetos que passei, ou até mesmo pesquisando na internet, é muito comum o uso de Exceptions para tal. Se você não quer entrar em um pattern mais elaborado e talvez gerar excesso de engenharia para uma tarefa relativamente simples, usar exceções na validação é sem dúvidas a forma mais “clean” do ponto de vista de código, afinal se uma regra não for atendida, simplesmente força uma exceção que interrompe o fluxo e ainda pode ser capturado em um nível...
Continuar Lendo »