Чек-лист для .NET программиста: Уровень доступа к данным

В реляционной модели данные представлены в табличной форме, в то время как в объектно-ориентированных языках данные хранятся в виде графов объектов, что порождает целый ряд трудностей, когда дело доходит до преобразования объектов в табличную форму и наоборот: разные представление связей между зависимыми данными, отсутствие наследования в реляционном мире, несовпадение способов проверки идентичности и тд. (читай The Object-Relational Impedance Mismatch). Даже если программист решит вопрос преобразования, то перед ним возникнет проблема поддержки данных в базе и в оперативной памяти приложения в согласованном состоянии.

Продолжить чтение «Чек-лист для .NET программиста: Уровень доступа к данным»

Чек-лист для .NET программиста: Многопоточность и Асинхронность

Многопоточность является мощным инструментом в разработке программного обеспечения, применение которого несет как неоспоримые преимущества, так и определенные сложности. C одной стороны разработчик получает возможность более эффективно использовать ресурсы операционной системы, что ведет к улучшению быстродействия приложения, но с другой стороны возрастает сложность отладки, появляется необходимость заботиться о синхронизации совместно используемых ресурсов памяти, увеличивается сложность тестирования, появляется риск возникновения смертельных блокировок. Также при недостаточно умелой реализации многопоточности снова возникает шанс повлиять на быстродействие приложения, но только в худшую сторону.

Продолжить чтение «Чек-лист для .NET программиста: Многопоточность и Асинхронность»

Чек-лист для .NET программиста: Анализ и Проектирование

Стадия проектирования начинается после сбора и анализа основных требований к определенной функциональности или приложению в целом: выделяются ключевые классы, происходит их декомпозиция, близкие классы группируются в модули, определяются их публичные интерфейсы. После проектирования начинается кодинг, в процессе которого выясняются новые особенности проекта, приходит большее понимание предметной области. Согласно новому опыту, полученному на стадии кодинга, разработчик может переосмыслить имеющийся дизайн и расширить его или провести рефакторинг.

Продолжить чтение «Чек-лист для .NET программиста: Анализ и Проектирование»

Чек-лист для .NET программиста: Базы данных SQL и NoSQL

Практически каждое приложение за исключением самых простых нуждается в более надежном хранилище данных, чем оперативная память. В зависимости от специфики разрабатываемого программного обеспечения, программисты выбирают наиболее подходящую СУБД, из которых можно выделить реляционные (MS SQL), документо-ориетированные (MongoDB, CouchDB) и объектно-реляционные (PostgreSQL). Каждый тип СУБД обладает своими сильными и слабыми сторонами. Например, MongoDB отлично масштабируется горизонтально, имеет динамическую схему данных, является кроссплатформенной БД, однако, в отличие от MS SQL, не поддерживает транзакций, триггеров, внешних ключей и является менее развитой с точки зрения безопасности. Как результат некоторые разрабатываемые приложения работают одновременно с несколькими видами баз данных, c целью позаимствовать сильные стороны каждой из них.

Продолжить чтение «Чек-лист для .NET программиста: Базы данных SQL и NoSQL»

Чек-лист для .NET программиста: Алгоритмы и структуры данных

Алгоритмы представляют собой готовые решения проблем, периодически возникающих в процессе разработки программного обеспечения. Фактически программист лишается необходимости изобретать велосипед, а только проанализировать набор существующих алгоритмов и выбрать из них тот, который лучше всего подходит для решения поставленной задачи.

Продолжить чтение «Чек-лист для .NET программиста: Алгоритмы и структуры данных»

Чек-лист для .NET программиста: Модульное тестирование

Модульное или юнит-тестирование (Unit testing) относится к такому виду тестирования, которым занимается непосредственно программист, с целью проверки работоспособности отдельного модуля приложения в изоляции от других. В среде .NET модульные тесты разрабатываются при помощи таких основных инструментов, как NUnit, xUnit и MSTest. Для создания заглушек (Stubs, Mocks) обычно используются фреймворки Moq, Rhino Mocks и Microsoft Moles. Определить уровень покрытия кода модульными тестами (Code Coverage) помогает инструмент NCover.

Продолжить чтение «Чек-лист для .NET программиста: Модульное тестирование»

Чек-лист для .NET программиста: Рефакторинг

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

Продолжить чтение «Чек-лист для .NET программиста: Рефакторинг»

Чек-лист для .NET программиста: С# и .NET

C# является объектно-ориентированным компилируемым языком программирования со строгой типизацией, который позволяет программисту разрабатывать логику приложений, выполняющихся под руководством .NET фреймворка. В настоящее время область применения языка С# достаточно широка, ведь с его помощью можно создавать веб-сайты, веб-сервисы, игры, мобильные и настольные приложения. C# обладает богатым синтаксисом, а такие возможности языка как LINQ, итераторы, лямбда-выражения, методы расширения, фильтры исключений и прочие позволяют писать максимально лаконичный код.

Продолжить чтение «Чек-лист для .NET программиста: С# и .NET»