[.NET] Как я на собеседование готовился №1

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
14-Дек-2020 09:30

Иногда так случается, что хочется сменить работу. В таком случае, у нас есть несколько вариантов:
  • 1) Потребовать прибавки, чтобы получить дополнительную мотивацию работать
  • 2) Потребовать отпуск, чтобы отдохнуть от надоевших задач и набраться сил.
  • 3) Сменить работу, выложив резюме, в надежде, что Вы получите предложение, которое будет Вас удовлетворять.

Если Вы все таки выбрали 3й вариант, то Вы поступили, как я. И я получил предложение мечты: родной стек(последнее время, я был вынужден сменить любимый C#, на php, так ещё и bitrix framework), финтех и с прибавкой к зарплате. Конечно же, первый делом, я решил подновить знания. Этот текст — это в первую очередь, моя шпаргалка, составленная с текста вакансии на должность Middle .NET Engineer моей мечты.
ORM — Entity Framework / NHibernate
Entity framework и NHibernate — это фреймворки, которые используют технологию ORM(объектно-ориентировочного отображения(маппинга)для сопоставления объектов(классов) с таблицами в БД. То есть ORM, условно, прослойка между кодом и базой данных, которая позволяет созданые в программе объекты складывать/получать в/из бд.
Плюсы EF
  • Позволяет создать таблицу кодом или же используя EF Designer и сгенерировать новую базу данных
  • Вы можете «автоматизировать» создание объектов, а так же отслеживать изменения этих объектов, чем упростить процес обновления базы данных
  • Использование единого синтаксиса(LINQ) для любых коллекций объектов, будь то данные из БД, или просто список; он достаточно быстр, при правильном использовании, а так же в меру лаконичен.
  • EF может заменить огромные куски кода, которые Вы бы писали самостоятельно.
  • Сокращает время разработки.
  • Поддерживает асинхронные операции с базами данных.

Минусы EF
  • Использование «нетрадиционного» подхода обработки данных, доступного не с каждой базой данных.
  • При любом изменении в схеме БД, EF откажется работать; потребуются изменения в коде.
  • SQL-код генерируются в некотролируемом виде, мы должны доверять разработчикам самого EF.
  • Слабо подходит для больших доменных моделей.

Плюсы NHibernate
  • Большие возможности маппинга.
  • Поддержка кэша второго уровня.
  • Отличная реализация Unit Of Work.
  • Вы можете использовать почти любую базу данных.
  • Очень популярный в корпоративной среде.
  • Поддерживает различные стратегии генерации идентификаторов из базы данных.

Минусы NHibernate
  • Большое время подготовки метаданных.
  • Написание сопоставления, может быть очень утомительным, ведь XML — не самый дружелюбный язык.
  • Сложен в освоении, так как сложен сам процес поиска документации.

Writing unit tests frameworks
Юнит-тесты позволяют быстро и автоматически протестировать отдельные компоненты приложения независимо от остальной его части. Не всегда юнит-тесты могут покрыть весь код приложения, но тем не менее они позволяют существенно уменьшить количество ошибок уже на этапе разработки.
Популярные фрейморки:
  • xUnit.net
  • MS Test
  • NUnit

Начиная с Visual Studio 2019 специально для тестов были добавлены три типа проектов: xUnit Test Project(.NET Core), MSTest Test Project(.NET Core) и NUnit Test Project(.NET Core)
Я буду рассматривать xUnit
Тесты в xUnit определяются в виде методов, к которым применяются атрибуты Fact, Theory.
Fact- это отдельный тест, у которого нет параметров. Theory — тест, принимающий параметры, может иметь несколько сценариев.

Пример

SPL
[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){...}


Существует целая парадиграма тестирования, которую xUnit реализует в полной мере: Arrange-Act-Assert.
  • Arrange: устанавливает начальные условия для выполнения теста
  • Act: выполняет тест (обычно представляет одну строку кода)
  • Assert: верифицирует результат теста

Arrange и Act — это обычный код на C#, а Assert — это отдельный класс с набором статических методов для проверки результатов.

Основные методы

SPL
  • 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


Таким образом, мы прошли 2 из 7 пунктов резюме.
В следующей части:
• DI frameworks
• Application designs understanding (n-Tier, Onion).
Спасибо, что дочитали, таким образом, я понимаю, что не один я готовлюсь к чему-либо ;)
Материалы: раз, два, три
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_.net, #_unittesting, #_.net, #_orm, #_.net
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 17:45
Часовой пояс: UTC + 5