Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru

Что такое рефакторинг?

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

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

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

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

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

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

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

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

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

  • составление методов (Extract Method, Inline Method, Introduce Explaining Variable, Substitute Algoritm),
  • перемещение функций между объектами (Move Method, Move Field, Inline Class, Extract Class),
  • организация данных (Replace Data Value with Object, Replace Array with Object, Encapsulate Field),
  • упрощение условных выражений (Replace Conditional with Polymorphism, Consolidate Duplicate Conditional Fragments, Remove Control Flag),
  • упрощение вызовов методов (Rename Method, Add Parameter, Hide Method, Replace Exception with Test),
  • решение задач обобщения (Pull Up Field/Method, Push Down Field/Method, Extract Interface),
  • крупные рефакторинги (Trease Apart Inheritance, Convert Procedural Design to Object).

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

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

Непосредственно в Visual для программистов на C# и J# можно реализовывать следующие методы: Rename, Extract method, Encapsulate field, Extract interface, Promote local variable to parameter, Remove/Reorder parameters. Конечно, этого недостаточно для полноценной работы. Но лучше уж что-то, чем совсем ничего. Каждый из следующих плагинов обладает своим набором возможностей, выбор которых зависит от методов и глубины рефакторинга.

Наиболее часто используемыми плагинами являются:

  1. ReSharper — плагин, разработанный фирмой JetBrains всего лишь для двух языков C# и VB.NET.
  2. Плагин CodeIt.Once от фирмы Submain с поддержкой языки C# и VB.NET, — все тех же языков, что и ReSharper.
  3. Visual Assist 10.4.1647.0, разработанный фирмой Whole Tomato Inc, поддерживающий только три языка программирования — C++, C# и VB.NET.
  4. Три бесплатных плагина Refactor! для C++, Visual Basic и ASP.NET от компании Developer Express и один платный Refactor! Pro, но поддерживающий уже целых восемь языков C#, Visual Basic, C++, ASP.NET, XAML, XML, HTML, JavaScript.

Для тех, кто программирует на Delphi, возможность рефакторинга включена в Delphi версии XE. Об инструментах рефакторинга для PHP можно узнать на специализированном форуме http://www.programmingforum.ru/php/.

Что касается рефакторинга баз данных, то это можно сделать с помощью VSTS for Database Professionals.

Таким образом, использовать рефакторинг можно практически в любой современной системе разработки программного обеспечения.

Автор: EkaterinaAlekseevna, специально для xBB.uz, 25.01.2012


Предыдущие публикации:

Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2012-01-25 15:02:55

Метки материала: рефакторинг, что такое рефакторинг, по, it, программирование, софт, software, программное обеспечение, soft, разработка по, информационные технологии, ит, исходный код, программное обеспечение по

Оставьте, пожалуйста, свой комментарий к публикации

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.