Upload
fwdays
View
631
Download
4
Embed Size (px)
Citation preview
Разрушаем .NET МифыСергей КалинецSigma Software
[email protected]@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
И про мертвых
Спасибо!