Versão 02 Flexibilizar e simplificar, a princípio, é essencial para garantirmos entregas eficientes ao Negócio. Para isso, nossa recomendação é a adoção de princípios ágeis, como YAGNI. You Ain’t Gonna Need It ou YAGNI foi adotado como um princípio da metodologia Extreme Programming (XP) e tem como missão melhorar a qualidade e flexibilidade de um software em relação às (aqui te […]
Comparando “Local Functions” e “Lambda Expressions”
Local functions e Lambda Expressions parecem resolver os mesmos tipos de problema. Entretanto, internamente, são implementados, frequentemente, de forma signficativamente distinta. Considere os dois códigos que seguem Comecemos comparando as duas funções que seguem: static void Foo() { Func<int> theAnswer = () => 42; Console.WriteLine(theAnswer()); } e static void Foo() { int theAnswer() => 42; […]
Adote Inversão de Controle para tornar seus componentes testáveis
É essencial, para sobrevivência de um produto, possuirmos estratégias de evolução da qualidade, principalmente em softwares legado. Por isso recomendamos a adoção de Inversão de Controle. Inversão de controle é a capacidade de um componente de software possuir uma dependência de outro componente sem ter a capacidade de instanciá-lo. public class Genio { public string […]
Rodando código .NET, no browser, sem instalar nada
Fibonacci Generator Here is my example of a Fibonacci generator implemented in C#.
Escreva testes automatizados pelos motivos certos
Independente de qual seja a motivação de um desenvolvedor ao alterar um código – seja para corrigir um bug, adicionar uma funcionalidade, melhorar a manutenabilidade ou a performance – este deverá se preocupar em não comprometer comportamentos do sistema que corresponderem as expectativas de seus usuários. Mesmo em sistemas bem escritos, haverá algum grau de […]
Creating a Windows Service with Topshelf
Creating windows services can be a tricky task. Debugging problems can be difficult and deploy usually is a headache. Topshelf simplifies all these activities. Why to create a Windows service? When we want our application running in background, continuously, without worrying about which user is logged in or even risk someone accidentally closing it, a […]
Dois sentimentos relacionados a sistemas sem testes automatizados: medo e desapego
Código legado costuma gerar dois sentimentos lamentáveis nos times técnicos: medo e desapego. O medo existe porque, com frequência, modificações no código acabam modificando, de forma imprevista, comportamentos do sistema, gerando prejuízos, antipatia e críticas por parte do negócio. Ou seja, não raro desenvolvedores tem medo de mudar o sistema e acabarem “queimados” pelos efeitos […]
Local Functions de dentro das trincheiras
No post de hoje vamos entender um pouco como se comporta o código C# quando decidimos utilizar o recurso Local Functions. Local Functions é uma recurso adicionado desde a versão do C# 7.0. Esta funcionalidade se comporta como uma função ou método privado e pode ser implementada e utilizada em várias partes do código, como por […]
O amadorismo da prática de “modificar e rezar”
Michael Feathers fala que desenvolvedores podem assumir duas posturas distintas ao fazer modificações nos sistemas: “modificar e rezar” ou “cobrir e modificar”. “Modificar e rezar” acontece quando um desenvolvedor altera o código de um sistema sem que existam testes adequados. Já “cobrir e modificar” acontece quando o desenvolvedor se certifica de que existam bons testes, […]
Usando Cron Expressions para agendamento de jobs recorrentes
De maneira bastante direta, uma cron expression é uma string que expressa um agendamento. Geralmente, utilizamos-a para determinar a periodicidade de execução de um job. Ela possui o formato de 5 a 7 campos separados por espaço, e cada campo tem um significado.