12 декабря 2014 г.

Fiddler. Инструмент для анализа HTTP

Fiddler - это отличный и бесплатный инструмент для анализа HTTP трафика. В этой статье я постараюсь описать некоторые его базовые возможности.

21 октября 2014 г.

Отладка Android приложений на реальном устройстве


Для того чтобы использовать реальное устройство для отладки ваших Android-приложений необходимо сделать 2 вещи:

6 сентября 2014 г.

Исключения при вызове метода связанного с делегатом

На днях коллега рассказал одну задачу, которая заключается в том чтобы реализовать событие так, чтобы при возникновении исключения в одном обработчике, все равно были вызваны остальные обработчики.

29 августа 2014 г.

Частая ошибка №10: Накопление предупреждений компилятора. Перевод.

Оглавление

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

Частая ошибка №9: Избегание исключений. Перевод.

Оглавление

C# продолжает следить за безопасностью типов и во время выполнения. Это позволяет вам точнее и быстрее выявлять ошибки, по сравнению с языками типа C++, где ошибка приведения типа может привести к произвольному значению в полях объекта. Тем не менее, программисты могут "разбрасываться" такой замечательной возможностью C#. Они попадают в эту ловушку потому что C# предоставляет два различных пути для приведения: один из них бросает исключение, а другой - нет. Некоторые избегают варианта с исключениями, полагая что не имея блока try/catch они экономят немного кодирования.

Частая ошибка №8: Пренебрежение очисткой ресурсов. Перевод.

Оглавление

Среда CLR использует сборщик мусора, так что вам не надо явно освобождать память, занятую под любой объект. Фактически, вы и не можете. Нет, подобного C++, оператора delete или функции free() как в C. Но это не означает что вы можете просто забыть обо всех объектах, после того как закончили использовать их. Многие типы объектов включают в себя некоторые другие типы системных ресурсов (например файл на диске, подключение к БД, сетевое соединение и т.п.). Оставляя такие ресурсы открытыми вы можете быстро истощить общее количество системных ресурсов, снизить производительность и в конце концов привести программу к ошибке.

28 августа 2014 г.

Частая ошибка №7: Использование неверного типа коллекции для поставленной задачи. Перевод.

Оглавление

C# предоставляет большое разнообразие объектов-коллекций, приведем неполных их список:
Array, ArrayList, BitArray, BitVector32, Dictionary<K,V>, HashTable, HybridDictionary, List<T>, NameValueCollection, OrderedDictionary, Queue, Queue<T>, SortedList, Stack, Stack<T>, StringCollection, StringDictionary.

25 августа 2014 г.

Частая ошибка №6: Путаница из-за методов расширения. Перевод.

Оглавление

Ранее я упомянул что выражения LINQ работают с любыми объектами, реализующими IEnumerable.

20 августа 2014 г.

Частая ошибка №5: Непонимание объектов, лежащих в основе выражения LINQ. Перевод.

Оглавление

LINQ отлично подходит для абстрагирования задач работы с коллекциями, будь-то объекты в памяти, таблицы базы данных или XML-документы. В идеальном мире вам не нужно было бы знать какие объекты лежат в основе. Но ошибка здесь - думать что мы живем в идеальном мире. Фактически одно и тоже выражение LINQ может вернуть различные результаты при выполнении на абсолютно одинаковых данных, если эти данные были в различных форматах.

15 августа 2014 г.

Частая ошибка №4: Использование итеративных (вместо декларативных) выражений для работы с коллекциями. Перевод.

Оглавление

Добавление языка интегрированных запросов (LINQ) в C# 3.0 навсегда изменило способ работы с коллекциями. С тех пор, если вы используете итеративные выражения для работы с коллекциями, то вы не используете LINQ там, где, скорее всего, должны были бы.

11 августа 2014 г.

Частая ошибка №3: Использование неподходящих или неопределенных методов сравнения строк. Перевод.

Существует множество различных способов сравнивать строки в C#.

Хотя многие программисты используют оператор == для сравнения строк, на самом деле это один из наименее желательных методов для этого, в первую очередь потому что он не позволяет явным образом в коде указать какой тип сравнения необходим.

7 августа 2014 г.

Частая ошибка №2: Неправильное понимание значений по умолчанию для неинициализированных переменных. Перевод.

Оглавление

В C#, типы значений не могут быть null. По определению типы значений имеют значение, и даже неинициализированные переменные типов значений должны иметь значение. Это называется значением по умолчанию для этого типа. Это приводит к последующему, обычно неожиданному, результату проверки инициализации переменной:

4 августа 2014 г.

Частая ошибка №1: Использование ссылок как значений и наоборот. Перевод.

Оглавление

Программисты C++ и многих других языков привыкли управлять тем как они присваивают значение переменной: будет ли это просто значение или ссылка на уже существующий объект. Однако в C# это решение принимается программистом, который писал объект, а не тем кто создает его экземпляр и присваивает переменной. Это частая "ловушка" новичков в C#.

10 наиболее частых ошибок, которые совершают C# программисты. Перевод.

Это мой перевод статьи "10 Most Common Mistakes that C# Programmers Make".
Оригинал - http://www.toptal.com/c-sharp/top-10-mistakes-that-c-sharp-programmers-make by Patrick Ryder.

30 июля 2014 г.

Немного о делегатах

Посмотрим на некоторые особенности делегатов.

15 июня 2014 г.

Ограничения параметров типа

Сегодня немного поговорим об ограничениях, которые можно использовать при определении универсальных типов.

14 июня 2014 г.

Использование синтаскиса запросов или синтаксиса методов в LINQ

Благодаря методам расширения интерфейсы IEnumerable, IEnumerable<T> и Queryable, IQueryable<T> обзавелись новыми методами (если конечно используется директива using System.Linq). Известно что запросы LINQ можно писать различными способами, об этом и поговорим.