среда, 8 мая 2013 г.

Рефакторинг. Предварительные приемы.

   Наверняка многие из нас, особенно те, кто пишет программный код,  слышали о рефакторинге. Хочу поделиться с вами предварительными приемами рефакторинга, взятыми из замечательной книжки - "Рафакторинг в C# и Asp.Net для профессионалов", Даниэль Арсеновски. Отличная книга, в ней все разложено по полочкам с объяснениями на практических примерах, всем советую.
   Для начала, определение.
 Рефакторинг - это набор приемов, используемых для идентификации потока дизайна и модификации внутренней структуры кода с целью совершенствования дизайна без изменения видимого поведения кода.
    Рефакторинг состоит из трех шагов:
1. Идентификация кода с душком.
2. Применение подходящего рефакторинга.
3. Выполенение unit-тестов.

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

2. Сокращение области видимости и уровня доступа излишне открытых элементов.
Открытие ненужных внутренних деталей противоречит принципу хорошо инкапсулированного кода - принципу сокрытия информации/реализации.

3. Использование явного импорта.
При чтении кода вы полагаетесь на раздел импорта, чтобы выявить зависимости, присутствующие в коде. Использование полностью уточненных имен вместо раздела импорта может значительно затруднить понимание зависимостей в коде. Поэтому предпочтение стоит отдавать явному импорту.
Пример:
вместо
  System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
использовать
  using System.Xml;
  ......
  XmlDocument doc = new XmlDocument();

4. Удаление неиспользуемых ссылок на сборки.
Неиспользуемые ссылки - это почва для излишних зависимостей. Эта зависимость говорит разработчикам, что они могут использовать службы, предоставленные ссылаемой сборкой. Если ссылка не будет удалена из проекта, то в какой-то момент в будущем она будет использована вновь. Такой путаницы нужно избегать.