29
Разрушаем .NET Мифы Сергей Калинец Sigma Software [email protected] @skalinets

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

  • Upload
    fwdays

  • View
    631

  • Download
    4

Embed Size (px)

Citation preview

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

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

[email protected]@skalinets

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

14 лет в разработке

Тренер по инженерным практикам

Архитектор в 2

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

Мифы

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

Миф о проектах

• Успех – это когда много проектов в солюшене

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

Аргументы

• Солидность

• Разделение ответственности

• Возможность частичного развертывания

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

На самом деле

• Дольше сборка

• Сложнее развертывание

• Сборка – единица развертывания, а не логической группировки

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

Миф о базах данных

• Внешние ключи

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

Агрументы

• Целостность данных

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

Проблемы

• Медленные запросы

• Больше внимания порядку запросов

• Меньше возможностей для масштабирования

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

Системы без внешних ключей

• NoSQL (Document, Table, Key-Value, etc.)

• NoDB (files, blobs, ect.)

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

На самом деле

• Для БД, которой владеет только одна система, внешние ключи не нужны

• Их роль берет на себя сама система

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

Миф о свойствах

• Публичные поля

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

Аргументы

• Так во всех книжках пишут

• Инкапсуляция

• Проблемы обратной совместимости

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

Проблемы

• Больше кода (хотя с каждой версией все меньше)

• Скорость работы (незначительное проседание)

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

На самом деле

• Для POCO объектов можно использовать поля

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

Миф об параметрах

• Их нужно всегда проверять

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

Аргументы

• Защита инвариантов

• Джуны повсюду

• Страховка от ошибок

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

Проблемы

• Дополнительный код

• Скорость работы

• Проверка не решает проблем

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

public int GetLength(string text){ return text.Length;}

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

public int GetLength(string text){ if (text == null) { throw new WtfException("text is null!!!"); } return text.Length;}

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

На самом деле

• Большинство проверок сработает только при ошибках

• На проде эти проверки бесполезны

• Такие проверки нужны только для публичных API

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

Миф о вендоре

• В .NET нужно использовать только решения, разработанные в Microsoft

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

А именно

• ADO.NET, LINQ 2 SQL, EF

• ASP.NET, Web API

• Windows, MS SQL Server, IIS

• MSBuild

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

На самом деле

• 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

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

Последний миф

• .NET уже не тот и вообще, надо валить

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

Чего так?

• Дорогой и закрытый стек

• Закрытые исходники

• Дорогие средства разработки

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

На самом деле

• VS Community Edition, BizSpark

• Open Source

• ASP.NET vNext

• .NET Core, .NET Native

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

И про мертвых

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

Спасибо!