Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курсовая работа. Рефакторинг ПО

.pdf
Скачиваний:
139
Добавлен:
05.06.2015
Размер:
817.87 Кб
Скачать

Методы: введение заданного по умолчанию значения; введение общего формата; введение ограничения столбца; добавление поисковой таблицы; замена кодового обозначения типа флажками свойств; осуществление стратегии консолидированных ключей; перемещение данных; преобразование столбца в не допускающий NULL-значения; применение стандартного типа; применение стандартных кодовых обозначений; уничтожение значения, заданного по умолчанию; уничтожение ограничения столбца; уничтожение столбца, не допускающего NULL-значений.

Рефакторинг ссылочной целостности

Изменения, направленные на поддержание ссылочной целостности в базе данных.

Методы: введение каскадного удаления; введение программного удаления; введение триггера для накопления исторических данных; введение физического удаления; добавление ограничения внешнего ключа; добавление триггера для вычисляемого столбца; уничтожение ограничения внешнего ключа.

Рефакторинг архитектуры

Изменения, направленные на улучшение взаимодействия внешних программ с базой данных.

Методы: введение вычислительного метода; введение индекса; введение таблицы только для чтения; добавление зеркальной таблицы; добавление метода чтения; добавление методов CRUD; замена метода (методов) представлением; замена представления методом (методами); инкапсуляция таблицы в представление; использование официально заданного источника данных; перенос метода в базу данных; перенос метода из базы данных.

Рефакторинг методов

Методы рефакторинга кода, применимые к триггерам и хранимым процедурам.

Когда проводить рефакторинг

Выделяются некоторые общие недостатки баз данных, наличие которых может сигнализировать о необходимости рефакторинга.

21

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

Многоцелевые таблицы, т.е. таблицы, в которых хранится информация о разных типах сущностей;

Избыточные данные;

Таблицы со слишком большим количеством столбцов;

Таблицы со слишком большим количеством строк;

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

Боязнь вносить изменения в схему базы данных из-за возможных нарушений в работе приложений.

Переходный период

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

Пример рефакторинга базы данных

Как пример рефакторинга базы данных можно привести операцию переименования столбца в существующей таблице.

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

22

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

Средства автоматизации рефакторинга

Технические критерии для инструментов рефакторинга:

Базы данных программы;

Деревья синтаксического разбора;

Точность.

Практические критерии для инструментов рефакторинга:

Скорость;

Отмена модификаций;

Интеграция с другими инструментами.

Рефакторинг в Visual Studio

В Microsoft Visual Studio издавна реализована прекрасная поддержка плагинов, с помощью которых можно расширять ее возможности. В частности, существует множество плагинов, как платных, так и бесплатных, дополняющих и улучшающих стандартный набор инструментов рефакторинга в студии.

Visual Assist X

Visual Assist X - плагин, разработанный фирмой Whole Tomato Inc.

Плагин поддерживает три языка программирования - C++, C# и VB.NET и работает практически во всех версиях студии, начиная c Visual C++ 6.0

23

Набор средств рефакторинга, предлагаемых Visual Assist X, является общим для всех языков и включает аналоги стандартных инструментов

"Rename", "Extract Method", "Encapsulate Field", новые инструменты "Change Signature", "AddMethod", "Add Similar Member" и "Document Method". Для разработчиков С++ так же доступны функции "Create Declaration", "Create Implementation" и "Move Implementation to Source File".

Инструменты рефакторинга Visual Assist X работают существенно быстрее стандартных. Их интерфейс все так же основан на использовании модальных диалогов, однако он во многом более эргономичен. Например, при вызове функции "Rename" показывается один диалог, а не два - предпросмотр совмещен с вводом нового имени. Функция "Change Signature" позволяет изменять сигнатуру метода произвольным образом, что гораздо удобнее, чем тыкать мышкой по списку параметров в стандартных диалогах

"Remove Parameter" и "Reorder Parameters".

Visual Assist реализует удобный способ быстрого вызова инструментов рефакторинга - достаточно навести мышкой на выделенный текст или любой идентификатор, как рядом с курсором мыши появляется иконка, при нажатии на которую открывается меню со списком доступных для выбранного участка кода методов рефакторинга.

Рефакторинг в Visual Assist является кросс-проектным, причем даже в тех случаях, когда проекты написаны на разных языках. Шаблоны генерируемого при рефакторинге кода настраиваются в настройках. Команда UNDO позволяет отменить изменения, внесенные в код при рефакторинге, причем все изменения отменяются скопом, "в один клик".

24

Refactor!

Компания Developer Express, разработчик небезызвестного плагина CodeRush, разработала целый набор плагинов для рефакторинга - три бесплатных плагина Refactor! для C++, Visual Basic и ASP.NET и один платный - Refactor! Pro, поддерживающий восемь языков C#, Visual Basic, C++, ASP.NET, XAML, XML, HTML, JavaScript. Плагины способны работать в VS2002-VS2008. Платная версия реализует в общей сложности около 150 инструментов рефакторинга, функциональность бесплатных плагинов несколько более скромная - 15 инструментов для С++, 36 для VB, 28 для

ASP.NET.

Так же как Visual Assist, Refactor! показывает иконку, открывающий меню со списком доступных, для выбранного участка кода, методов рефакторинга. Однако, интерфейс инструментов рефакторинга в Refactor! отличается принципиально - он является бездиалоговым, интерактивным и анимированным. Достаточно выбрать в списке методов рефакторинга требуемый, как Refactor! отобразит всплывающую подсказку с инструкциями какие клавиши нажимать и покажет каким образом при этом будет изменен код. Когда требуется вводить текст, например, новое название переменной, пользователь делает это прямо в редакторе студии - Refactor! автоматически изменяет все ссылки на эту переменную в коде программы.

Сравнительное тестирование бесплатной и платной версии Refactor! для С++ показало, что бесплатная версия не только обладает меньшим количеством функций, но и работает как-то менее уверенно. В процессе работы очень часто для выбранных участков кода не было доступно никаких инструментов рефакторинга, даже тривиального Rename. В платной версии такого не наблюдалось.

25

JustCode!

Плагин JustCode!, разработанный фирмой Omnicore, представляет из себя альтернативу ReSharper и Refactor! Плагин поддерживает VS2003 и VS2005, языки C#, J#, VB.NET, ASP.Net, JavaScript и HTML.

Набор операций рефакторинга, доступных в плагине, не слишком велик

- "Rename", "Inline variable", "Extract Method", автоматическое создание конструктора и преобразование переменной-члена класса в свойство.

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

К плюсам плагина относится кросс-проектность и кросс-языковость рефакторинга. К минусам - неполноценная реализация команды отмены операции рефакторинга - каждое изменение в коде нужно отменять отдельным вызовом UNDO.

Скорость работы плагина вполне на уровне, никаких особых "тормозов" в работу студии он не вносит. Однако бездиалоговый интерфейс в JustCode! пока отлажен не так четко, как в Refactor!, к нему приходится приноравливаться.

26

ReSharper

ReSharper - плагин, разработанный фирмой JetBrains, предназначенный для разработчиков, использующих C# и VB.NET и предоставляющий огромный набор разнообразных полезных функций, в число которых входят и средства рефакторинга.

Так же как Visual Assist и Refactor!, ReSharper умеет показывать контекстно-зависимое меню со списком инструментов рефакторинга, доступных для выбранного участка кода. Для вызова меню используется комбинация клавиш Ctrl+Shift+R. Это удобно - вызов любого инструмента рефакторинга всегда выполняется с помощью одной и той же комбинации клавиш.

Инструменты рефакторинга в ReSharper имеют диалоговый интерфейс, однако диалоги немодальные. Немного напрягает отсутствие возможности предварительного просмотра в некоторых диалогах. Впрочем, внесенные изменения при необходимости легко отменить - одна команда UNDO отменяет всю проведенную операцию рефакторинга целиком.

Всего доступно 34 метода рефакторинга, включая такие как "Move Type to Another File", "Inline variable", "Copy Type" и "Extract Superclass".

Реализованы они на хорошем уровне, пользоваться ими удобно.

Помимо собственно средств рефакторинга, ReSharper предоставляет огромный набор так называемых контекстных действий (context actions). Фактически - это мелкие операции по преобразованию кода, находящегося в позиции курсора. Например изменить область видимости текущего метода или конвертировать цикл foreach в цикл for. Для вызова списка доступных в текущем контексте действий достаточно нажать Alt+Enter или щелкнуть по значку лампочки, появляющемуся в начале строки.

27

CodeIt.Once

Плагин CodeIt.Once разработан фирмой Submain и предназначен исключительно для проведения рефакторинга. Поддерживает языки C# и VB.NET, способен работать с VS2003 и VS2005.

Codeit.Once реализует 14 инструментов рефакторинга. Несколько неожиданным является их интерфейс, установленный по умолчанию - многошаговые визарды (wizards), прямо скажем, не самый быстрый вариант интерфейса. К счастью, режим использования визардов можно отключить в настройках, после чего интерфейс становится диалоговым, напоминающим Visual Assist. Диалоги весьма компактны, удобны в работе и имеют функцию предпросмотра.

Скорость и качество работы методов рефакторинга в Codeit.Once не вызывают нареканий. Команда Undo реализована грамотно - отменяет в коде сразу все изменения, внесенные при выполнении операции рефакторинга.

28

Список используемой литературы

Книги

1.Фаулер М., Бек К., Брант Д., Робертс Д., Апдайк У. «Рефакторинг: улучшение существующего кода»

2.Скотт В. Эмблер, Прамодкумар Дж. Садаладж «Рефакторинг баз данных: эволюционное проектирование»

3.Джошуа Кериевски «Рефакторинг с использованием шаблонов»

4.Скотт В. Эмблер, Прамодкумар Дж. Садаладж Рефакторинг баз данных: эволюционное проектирование

Интернет-ресурсы

1.Wikipedia.org

2.Habrahabr.ru

29