- Demander une augmentation pour obtenir une motivation supplémentaire pour travailler
- Exigez des vacances pour faire une pause dans les tâches ennuyeuses et gagner en force.
- Changez de poste en publiant votre CV dans l'espoir de recevoir une offre qui vous satisfera.
Si vous avez toujours choisi la troisième option, vous avez fait ce que j'ai fait. Et j'ai reçu une offre de rêve: ma propre pile (dernièrement, j'ai été obligé de changer mon C # préféré, en php, et aussi le framework Bitrix), la fintech, et avec une augmentation de salaire. Bien sûr, tout d'abord, j'ai décidé de mettre à jour mes connaissances. Ce texte est, tout d'abord, mon aide-mémoire, compilé à partir du texte de poste vacant pour le poste d'ingénieur .NET intermédiaire de mes rêves.
ORM - Entity Framework / NHibernate
Entity Framework et NHibernate sont des frameworks qui utilisent la technologie ORM (mapping orienté objet (mapping) pour mapper des objets (classes) avec des tables dans une base de données. Autrement dit, ORM, conditionnellement, est une couche entre le code et la base de données, qui permet aux objets créés dans le programme ajouter / recevoir vers / depuis la base de données.
Avantages d'EF
- Vous permet de créer une table par code ou en utilisant EF Designer et de générer une nouvelle base de données
- Vous pouvez «automatiser» la création d'objets, ainsi que suivre les modifications apportées à ces objets, simplifiant ainsi le processus de mise à jour de la base de données
- Utilisation d'une seule syntaxe (LINQ) pour toutes les collections d'objets, qu'il s'agisse de données d'une base de données ou simplement d'une liste; il est assez rapide, s'il est utilisé correctement, et aussi raisonnablement laconique.
- EF peut remplacer d'énormes morceaux de code que vous écririez vous-même.
- Réduit le temps de développement.
- Prend en charge les opérations de base de données asynchrones.
Inconvénients d'EF
- Utiliser une approche "non conventionnelle" du traitement des données qui n'est pas disponible avec toutes les bases de données.
- Pour toute modification du schéma de base de données, EF refusera de fonctionner; des modifications du code sont nécessaires.
- Le code SQL est généré de manière incontrôlée, il faut faire confiance aux développeurs d'EF lui-même.
- .
NHibernate
- .
- .
- Unit Of Work.
- .
- .
- .
NHibernate
- .
- , , XML — .
- , .
Writing unit tests frameworks
Les tests unitaires vous permettent de tester rapidement et automatiquement les composants individuels d'une application indépendamment du reste de l'application. Les tests unitaires ne couvrent pas toujours l'intégralité du code de l'application, mais ils peuvent néanmoins réduire considérablement le nombre d'erreurs déjà au stade du développement.
Cadres populaires:
- xUnit.net
- Test MS
- NUnit
Je considérerai que les
tests xUnit dans xUnit sont définis comme méthodes auxquelles les attributs Fact, Theory sont appliqués.
Le fait est un test distinct qui n'a pas de paramètres. Théorie - un test qui accepte des paramètres peut avoir plusieurs scénarios.
Exemple
[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){...}
Il existe tout un paradigme de test que xUnit implémente pleinement: Arrange-Act-Assert.
- Organiser: définit les conditions initiales pour l'exécution du test
- Act: exécute un test (représente généralement une ligne de code)
- Assert: vérifie le résultat du test
Arrange et Act sont du code C # normal, tandis que Assert est une classe distincte avec un ensemble de méthodes statiques pour vérifier les résultats.
Méthodes de base
- All (collection, action): Cette méthode confirme que tous les éléments de la collection collection correspondent à l'action action
- Contains (expectedSubString, actualString): la méthode confirme que actualString contient 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
Ainsi, nous avons passé 2 des 7 points du résumé.
Dans la partie suivante:
- Cadres DI
- Compréhension des conceptions d'applications (n-Tier, Onion).
Merci d'avoir lu, donc je comprends que je ne suis pas le seul à préparer quelque chose;)
Matériel: un , deux , trois