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

Preview:

Citation preview

Разрушаем .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

И про мертвых

Спасибо!