Как стать автором
Обновить
77
0
Vladimir @vkhorikov

Пользователь

Отправить сообщение

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

Время на прочтение9 мин
Количество просмотров13K

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

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

Читать далее
Всего голосов 20: ↑20 и ↓0+20
Комментарии48

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

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

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

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

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

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

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

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

Типы CQRS

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

DTO vs POCO vs Value Object

Время на прочтение3 мин
Количество просмотров138K
В этой статье я бы хотел прояснить различия между DTO (Data Transfer Object), Value Object и POCO (Plain Old CLR Object), также известным как POJO в среде Java.
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии35

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

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

Читать дальше →
Всего голосов 24: ↑19 и ↓5+14
Комментарии20

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

Время на прочтение5 мин
Количество просмотров20K
Третья статья в серии «Функциональный C#».

Читать дальше →
Всего голосов 17: ↑14 и ↓3+11
Комментарии12

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

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

Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии49

Functional C#: Immutability

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


Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии17

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

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

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

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

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

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

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

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

Читать дальше →
Всего голосов 32: ↑25 и ↓7+18
Комментарии88

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

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

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

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

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

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

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

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

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

Информация

В рейтинге
Не участвует
Работает в
Зарегистрирован
Активность