- Solicite um aumento para obter motivação adicional para trabalhar
- Exija férias para fazer uma pausa nas tarefas enfadonhas e ganhar força.
- Mude de emprego postando seu currículo na esperança de receber uma oferta que o satisfaça.
Se você ainda escolheu a terceira opção, você fez o que eu fiz. E recebi uma oferta dos sonhos: minha própria pilha (ultimamente, fui forçado a mudar meu C # favorito, para php, e também o framework bitrix), fintech, e com aumento de salário. Claro, antes de tudo, decidi atualizar meus conhecimentos. Este texto é, antes de tudo, minha folha de referências, compilada a partir do texto vago para o cargo de Engenheiro .NET intermediário dos meus sonhos.
ORM - Entity Framework / NHibernate
Entity framework e NHibernate são frameworks que usam tecnologia ORM (mapeamento orientado a objetos (mapeamento) para mapear objetos (classes) para tabelas no banco de dados. Ou seja, ORM, condicionalmente, é uma camada entre o código e o banco de dados que permite objetos criados no programa adicionar / receber de / para o banco de dados.
Profissionais da EF
- Permite que você crie uma tabela por código ou usando EF Designer e gere um novo banco de dados
- Você pode "automatizar" a criação de objetos, bem como rastrear alterações nesses objetos, simplificando assim o processo de atualização do banco de dados
- Usando uma sintaxe única (LINQ) para qualquer coleção de objetos, seja dados de um banco de dados ou apenas uma lista; é rápido o suficiente, se usado corretamente, e também razoavelmente lacônico.
- EF pode substituir grandes pedaços de código que você mesmo escreveria.
- Reduz o tempo de desenvolvimento.
- Oferece suporte a operações de banco de dados assíncronas.
Contras de EF
- Usando uma abordagem "não convencional" para processamento de dados que não está disponível em todos os bancos de dados.
- Para qualquer mudança no esquema do banco de dados, EF se recusará a trabalhar; alterações no código são necessárias.
- O código SQL é gerado de forma descontrolada, devemos confiar nos próprios desenvolvedores do EF.
- .
NHibernate
- .
- .
- Unit Of Work.
- .
- .
- .
NHibernate
- .
- , , XML — .
- , .
Writing unit tests frameworks
Os testes de unidade permitem que você teste de forma rápida e automática os componentes individuais de um aplicativo, independentemente do resto do aplicativo. Os testes de unidade nem sempre abrangem todo o código do aplicativo, mas, no entanto, podem reduzir significativamente o número de erros já no estágio de desenvolvimento.
Estruturas populares:
- xUnit.net
- Teste MS
- NUnit
. Considerarei os
testes xUnit em xUnit são definidos como métodos aos quais os atributos de fato e teoria são aplicados.
O fato é um teste separado que não possui parâmetros. Teoria - um teste que aceita parâmetros pode ter vários cenários.
Exemplo
[Fact]
public void Should_do_somthing(){...}
[Theory]
[InlineData(20, 180, 80, ”good”)]
[InlineData(20, 180, 50, ”bad”)]
public void Should_measure_weight(int age, int height, decimal weight, string expected){...}
Existe todo um paradigma de teste que o xUnit implementa totalmente: Arrange-Act-Assert.
- Organizar: define as condições iniciais para a execução do teste
- Act: executa um teste (geralmente representa uma linha de código)
- Assert: verifica o resultado do teste
Arrange e Act são códigos C # regulares, enquanto Assert é uma classe separada com um conjunto de métodos estáticos para verificar os resultados.
Métodos básicos
- All(collection, action): , collection action
- Contains(expectedSubString, actualString): , actualString expectedSubString
- DoesNotContain(expectedSubString, actualString): , actualString expectedSubString
- DoesNotMatch(expectedRegexPattern, actualString): , actualString expectedRegexPattern
- Matches(expectedRegexPattern, actualString): , actualString expectedRegexPattern
- Equal(expected, result): result expected
- NotEqual(expected, result): result expected
- Empty(collection): , collection
- NotEmpty(collection): , collection
- True(result): , true
- False(result): , false
- IsType(expected, result): , expected
- IsNotType(expected, result): , expected
- IsNull(result): , null
- IsNotNull(result): , null
- InRange(result, low, high): , low high
- NotInRange(result, low, high): , low high
- Same(expected, actual): , expected actual
- NotSame(expected, actual): , expected actual
- Throws(exception, expression): , expression exception
Assim, passamos 2 dos 7 pontos do resumo.
Na próxima parte:
- Frameworks DI
- Compreensão de designs de aplicativos (n-Tier, Onion).
Obrigado pela leitura, entendo que não sou o único a preparar algo;)
Materiais: um , dois , três