Разрушаем .NET Мифы
Сергей Калинец
Sigma Software
kalinets@gmail.com
@skalinets
14 лет в разработке
Тренер по инженерным
практикам
Архитектор в
2
Мифы
Миф о проектах
• Успех – это когда много проектов в
солюшене
Аргументы
• Солидность
• Разделение ответственности
• Возможность частичного
развертывания
На самом деле
• Дольше сборка
• Сложнее развертывание
• Сборка – единица развертывания, а не
логической группировки
Миф о базах данных
• Внешние ключи
Агрументы
• Целостность данных
Проблемы
• Медленные запросы
• Больше внимания порядку запросов
• Меньше возможностей для
масштабирования
Системы без внешних ключей
• NoSQL (Document, Table, Key-Value,
etc.)
• NoDB (files, blobs, ect.)
На самом деле
• Для БД, которой владеет только одна
система, внешние ключи не нужны
• Их роль берет на себя сама система
Миф о свойствах
• Публичные поля
Аргументы
• Так во всех книжках пишут
• Инкапсуляция
• Проблемы обратной совместимости
Проблемы
• Больше кода (хотя с каждой версией
все меньше)
• Скорость работы (незначительное
проседание)
На самом деле
• Для POCO объектов можно
использовать поля
Миф об параметрах
• Их нужно всегда проверять
Аргументы
• Защита инвариантов
• Джуны повсюду
• Страховка от ошибок
Проблемы
• Дополнительный код
• Скорость работы
• Проверка не решает проблем
public int GetLength(string text)
{
return text.Length;
}
public int GetLength(string text)
{
if (text == null)
{
throw new WtfException("text is null!!!");
}
return text.Length;
}
На самом деле
• Большинство проверок сработает
только при ошибках
• На проде эти проверки бесполезны
• Такие проверки нужны только для
публичных API
Миф о вендоре
• В .NET нужно использовать только
решения, разработанные в Microsoft
А именно
• ADO.NET, LINQ 2 SQL, EF
• ASP.NET, Web API
• Windows, MS SQL Server, IIS
• MSBuild
На самом деле
• EF -> NHibernate, Micro ORMs (dapper,
petapoco, massive)
• ASP.NET, Web API -> NancyFX, Service
Stack, Suave (F#)
• MS SQL Server -> MySQL, SQLite,
Raven, Mongo
• MSBuild -> rake, fake, nake, …ake
Последний миф
• .NET уже не тот и вообще, надо валить
Чего так?
• Дорогой и закрытый стек
• Закрытые исходники
• Дорогие средства разработки
На самом деле
• VS Community Edition, BizSpark
• Open Source
• ASP.NET vNext
• .NET Core, .NET Native
И про мертвых
Спасибо!

"Разрушаем .NET мифы" Сергей Калинец