O desenvolvimento de software é uma tarefa complexa e, como desenvolvedor, você não ganha nada em “reinventar a roda”. Acredito firmemente que devemos tornar sua vida o mais simples possível no desenvolvimento de aplicações, utilizando pacotes testados e aprovados sempre que possível, que ajudam em uma melhor experiência na codificação.
Abaixo estão alguns dos pacotes que utilizo na maioria dos meus projetos. Acredito que eles facilitam no desenvolvimento e tornam o código muito mais simples e organizado.
1 – Serilog
Log é tudo o que você precisa para entender sua aplicação, sem ele é impossível compreender seu comportamento, identificar gargalos, alertas e erros, por isso coloquei o Serilog como o primeiro da lista.
- Nuget: https://www.nuget.org/packages/serilog
- Projeto: https://github.com/serilog/serilog
- Dicas: https://benfoster.io/blog/serilog-best-practices
2 – Polly
Polly é uma biblioteca .NET de resiliência de conexões e tratamento de exceptions, permitindo configurar políticas de retry, circuit breaker e timeout de maneira simples. É possível utilizar o Polly como resiliência em qualquer dependência externa da sua sua aplicação.
- Nuget: https://www.nuget.org/packages/Polly
- Projeto: https://github.com/App-vNext/Polly
- Dicas: https://anthonygiretti.com/2019/03/26/best-practices-with-httpclient-and-retry-policies-with-polly-in-net-core-2-part-1
3 – FluentValidation
Fluent Validation é uma biblioteca para realizar validação de classes utilizadas como View Models, Commands (conceito de CQRS), DTOs (objetos de transferência de dados), ou entidades de domínio, com o objetivo de realizar a implementação de regras de validação de forma simples e rápida (Fail-fast).
- Nuget: https://www.nuget.org/packages/FluentValidation
- Projeto: https://github.com/FluentValidation/FluentValidation
- Dicas: https://docs.fluentvalidation.net/en/latest/aspnet.html
4 – Humanizer
Humanizer atende a todas as suas necessidades .NET para manipular e exibir string, enum, datetime, times, timespan, timestamp, número e quantidades.
- Nuget: https://www.nuget.org/packages/Humanizer
- Projeto: https://github.com/Humanizr/Humanizer
- Dicas: https://blog.iteris.com.br/humanizer-a-biblioteca-definitiva-para-manipular-strings-em-net
5 – RestSharper
RestSharp é a biblioteca HttpClient mais popular em aplicações .NET, trabalhando com serialização e desserialização automáticas, detecção de tipo de request e response, variedade de autenticações e recursos úteis para se comunicar com outras APIs no seu projeto. (* outra ótima opção também é o pacte Refit)
- Nuget: https://www.nuget.org/packages/RestSharp
- Projeto: https://github.com/restsharp/RestSharp
- Dicas: https://restsharp.dev/getting-started/getting-started.html
6 – Automapper
AutoMapper é uma biblioteca open-source criada por Jimmy Bogard para resolver problemas de mapeamento de um objeto para outro. Este tipo de tarefa geralmente é sensível, e essa biblioteca foi criada para resolver esta situação de forma simples (* mas cuidado para ele não se tornar um vidão de performance no seu projeto. Outra ótima alternativa é o Mapter).
- Nuget: https://www.nuget.org/packages/automapper
- Projeto: https://github.com/AutoMapper/AutoMapper
- Dicas: https://docs.automapper.org/en/latest/Configuration.html
7 – FluentAssertions
Fluent Assertions é um conjunto de métodos de extensão que nos permitem especificar de forma natural o resultado esperado de um teste de unidade no estilo TDD ou BDD.
- Nuget: https://www.nuget.org/packages/FluentAssertions
- Projeto: https://github.com/fluentassertions/fluentassertions
- Dicas: https://fluentassertions.com/introduction
8 – NSubstitute
NSubstitute é uma ótima biblioteca para mock de objetos em Test Driven Development (TDD) em .NET. Com a abordagem de jogar fora a confusão em torno de Dummies, Mocks, Stubs, Fakes, Spies e Test Doubles facilitando nas escritas dos testes.
- Nuget: https://www.nuget.org/packages/NSubstitute
- Projeto: https://github.com/nsubstitute/NSubstitute
- Dicas: https://nsubstitute.github.io
9 – StackExchange.Redis
StackExchange.Redis é uma biblioteca que facilita a comunicação com o Redis, com vários métodos de extensão úteis deixando muito mais simples a comunicação e a manutenção de cache com o banco de dados.
- Nuget: https://www.nuget.org/packages/StackExchange.Redis
- Projeto: https://github.com/StackExchange/StackExchange.Redis
- Dicas: https://stackexchange.github.io/StackExchange.Redis
10 – Dapper
Dapper trabalha com a conexão de banco de dados existente e adiciona métodos de extensão para executar queries SQL e mapeá-lo de volta para classes em C#. Com o Dapper.Contrib fica ainda mais fácil manusear as operações CRUD com seu banco de dados.
- Nuget: https://www.nuget.org/packages/Dapper e https://www.nuget.org/packages/Dapper.Contrib
- Projeto: https://github.com/DapperLib/Dapper
- Dicas: https://dapper-tutorial.net
Finalizando
Esses foram os principais pacotes Nuget que utilizo em quase todos projetos. Acredito que eles contribuem para uma experiência de desenvolvimento e manutenção muito mais agradável e espero que também sejam úteis em seus projetos. Se você conhece qualquer outro pacote e acha que deveria estar nesta lista, por favor, me informe que atualizo este artigo.
Agradecimentos especiais a todos os autores e colaboradores desses pacotes, vocês tornam a vida de vários desenvolvedores muito mais fácil.
Muito boa a indicação, eu apenas trocaria o restsharp pelo flurl