Pull to refresh
77
0
Vladimir @vkhorikov

User

Send message

Школы юнит-тестирования

Reading time 9 min
Views 13K

Существуют две основные школы юнит-тестирования: классическая (ее также называют школой Детройта, или Чикаго) и лондонская (ее также называют мокистской школой, от слова mock).

Эти школы кардинально отличаются друг от друга в подходе к юнит-тестированию, но все эти отличия можно свести к расхождению во мнениях о том, что является юнит-тестом. В этой статье обсудим, как именно школы интерпретируют это понятие и к каким отличиям это приводит.

Читать далее
Total votes 20: ↑20 and ↓0 +20
Comments 48

Отзыв на книгу Growing Object-Oriented Software, Guided by Tests

Reading time 13 min
Views 12K
Эта статья — ревью на книгу «Growing Object-Oriented Software, Guided by Tests» (GOOS для краткости). В ней я покажу, как можно имплементировать проект-пример из книги без использования моков (mocks).

Цель статьи — показать, как использование моков может навредить коду и насколько проще этот же код становится если от моков избавиться. Второстепенная цель — выделить советы из книги, которые личне мне кажутся разумными и те, которые, наоборот, приносят больше вреда, чем пользы. В книге довольно много и тех и других.

Версия на английском: ссылка.
Читать дальше →
Total votes 20: ↑18 and ↓2 +16
Comments 13

Entity vs Value Object: полный список отличий

Reading time 6 min
Views 58K
Тема отличий таких понятий как Entity (Сущность) и Value Object (Объект-Значение) из Domain-Driven Design не нова. Тем не менее, я не смог найти статью с полным списком их отличий, так что решил написать свою.
Читать дальше →
Total votes 25: ↑15 and ↓10 +5
Comments 20

3 способа использовать оператор?.. неправильно в C# 6

Reading time 4 min
Views 26K
Наверняка вы уже знаете об операторе безопасной навигации ("?." операторе) в C# 6. В то время как это довольно хороший синтаксический сахар, я хотел бы отметить варианты злоупотребления этим оператором.
Читать дальше →
Total votes 20: ↑17 and ↓3 +14
Comments 80

Типы CQRS

Reading time 5 min
Views 28K
CQRS — довольно хорошо изученный паттерн. Часто можно слышать, что вы либо следуете CQRS, либо нет, имея ввиду что это что-то вроде бинарного выбора. В этой статье я бы хотел показать, что существует спектр вариаций этого понятия, а также как разные типы CQRS могут выглядеть на практике.
Читать дальше →
Total votes 19: ↑16 and ↓3 +13
Comments 21

Functional C#: работа с ошибками

Reading time 6 min
Views 29K
В этой части мы рассмотрим как иметь дело со сбоями и ошибками ввода в функциональном стиле.

Читать дальше →
Total votes 24: ↑19 and ↓5 +14
Comments 20

Functional C#: Non-nullable reference types (ненулевые ссылочные типы)

Reading time 5 min
Views 20K
Третья статья в серии «Функциональный C#».

Читать дальше →
Total votes 17: ↑14 and ↓3 +11
Comments 12

Functional C#: Primitive obsession (одержимость примитивами)

Reading time 6 min
Views 28K
Это вторая статья из миницикла статей про функциональный C#.

Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Comments 49

Functional C#: Immutability

Reading time 4 min
Views 47K
Это первая статья из небольшой серии, посвященной программированию на C# в функциональном стиле. Серия не про LINQ, как можно было бы подумать, а про более фундаментальные вещи. Навеяно F#-ом.


Читать дальше →
Total votes 30: ↑27 and ↓3 +24
Comments 17

Code contracts vs валидация входящих данных

Reading time 4 min
Views 13K
Правила валидации входящих данных часто принимают за контракты в коде (как, собственно, и наоборот). Давайте разберемся в чем отличие между этими двумя понятиями и в каких случаях они применимы.
Читать дальше →
Total votes 13: ↑11 and ↓2 +9
Comments 16

Как правильно использовать исключения

Reading time 6 min
Views 47K
Использование исключений для контроля хода выполнения программы (flow control) — давняя тема. Я хотел бы суммировать этот топик и привести примеры правильного и неправильного использования исключений.
Читать дальше →
Total votes 32: ↑25 and ↓7 +18
Comments 36

Принцип разделения ответственности и ORM

Reading time 5 min
Views 23K
Я бы хотел обсудить принцип разделения ответственности (Separation of Concerns, SoC) в контексте ORM, а также посмотреть почему этот принцип так важен. Также мы рассмотрим примеры нарушения границ ответственности между доменной логикой и логикой сохранения данных.
Читать дальше →
Total votes 20: ↑16 and ↓4 +12
Comments 99

Entity Framework 6 (7) vs NHibernate 4: взгляд со стороны DDD

Reading time 9 min
Views 40K
В сети уже есть довольно немало сравнений Entity Framework и NHibernate, но все они по большей части фокусируются на технической стороне вопроса. В этой статье я бы хотел сравнить эти две технологии с точки зрения Domain Driven Design (DDD). Мы рассмотрим несколько примеров кода и увидим как эти две ORM позволяют нам справляться со сложностями.

Читать дальше →
Total votes 32: ↑25 and ↓7 +18
Comments 87

IEnumerable интерфейс в C# и LSP

Reading time 5 min
Views 42K
Эта статья — продолжение статьи C#: коллекции только для чтения и LSP. Сегодня мы посмотрим на интерфейс IEnumerable с точки зрения принципа подстановки Барбары Лисков (LSP), а также разберемся, нарушает ли этот принцип код, имплементирующий IEnumerable.
Читать дальше →
Total votes 15: ↑11 and ↓4 +7
Comments 13

Async/await в C#: подводные камни

Reading time 6 min
Views 104K
Я бы хотел обсудить подводные камни, которые наиболее часто встречаются при работе с фичей async/await в C#, а также написать про то, как их можно обойти.
Читать дальше →
Total votes 36: ↑35 and ↓1 +34
Comments 46

C#: коллекции только для чтения и LSP

Reading time 5 min
Views 27K
Часто разработчики утверждают, что read-only коллекции в .NET нарушают принцип подстановки Барбары Лисков. Так ли это? Нет, это не так, потому что IList интерфейс содержит флаг IsReadOnly. Исключением является класс Array, он действительно нарушает LSP принцип начиная с версии .NET 2.0. Но давайте разберемся во всем по порядку.
Читать дальше →
Total votes 25: ↑23 and ↓2 +21
Comments 13

Микросервисы (Microservices)

Reading time 22 min
Views 677K
От переводчика: некоторые скорее всего уже читали этот титанический труд от Мартина Фаулера и его коллеги Джеймса Льюиса, но я все же решил сделать перевод этой статьи. Тренд микросервисов набирает обороты в мире enterprise разработки, и эта статья является ценнейшим источником знаний, по сути выжимкой существующего опыта работы с ними.

Термин «Microservice Architecture» получил распространение в последние несколько лет как описание способа дизайна приложений в виде набора независимо развертываемых сервисов. В то время как нет точного описания этого архитектурного стиля, существует некий общий набор характеристик: организация сервисов вокруг бизнес-потребностей, автоматическое развертывание, перенос логики от шины сообщений к приемникам (endpoints) и децентрализованный контроль над языками и данными.
Читать дальше →
Total votes 29: ↑29 and ↓0 +29
Comments 45

Information

Rating
Does not participate
Works in
Registered
Activity