Путь разработчика    

Код рефакторинга в C#


Содержание

Что такое рефакторинг? Это процесс улучшения читаемости, сложности и производительности кода путем изменения:

  • Внутренняя структура кода.
  • Внешнее поведение кода.

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

  • Как изменить структуру кода
  • Как уменьшить длину кода
  • Как преодолеть сложности

Методы

Существует несколько способов эффективного использования рефакторинга над вашим кодом, эти методы уже доступны в Visual Studio:

  • Метод извлечения
  • Извлечь интерфейс
  • переименовывать
  • Продвигать переменную в параметр
  • Инкапсулировать поле
  • Изменение подписи
  • Создать метод заглушки

Метод извлечения

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

1. Любая локальная переменная, которая определена перед выбранным кодом, но используется в ней, становится входным параметром.
2. Любая такая переменная типа локального значения, которая изменяется выбранным кодом, будет преобразована в параметр сравнения по ссылке (с использованием квалификатора ref).
3. Если выбранный код не использует какие-либо переменные-члены, он будет извлечен в статический метод.

Выберите любой блок кода из вашего сегмента кода.

Этот блок кода может быть любым условным оператором, таким как IF, может быть оператором цикла, подобным for, может быть методом или всем, что вам нужно реорганизовать внутри вашего сегмента кода.

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

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

2.Вы можете выбрать фрагмент кода и перейти в Edit-> Refactor-> Extract Method.
Он заменит фрагмент кода новым методом, и новый метод будет создан автоматически с помощью этого фрагмента кода.

Переименование

Вы можете использовать рефакторинг для интеллектуального переименования переменной, параметра, метода или типа.
Инструмент рефакторинга будет различать буквальные имена и слова в комментариях и разные версии перегруженного метода.
То есть при переименовании метода вы получите возможность изменить имя этой конкретной версии метода (в его определении и всех его сайтах) или все перегруженные версии этого метода

Например, чтобы переименовать тип Form1 в ClientForm, щелкните правой кнопкой мыши в любом месте вашего кода, где присутствует тип Form1 (в его определении или местах, где он используется) и выберите «Переименовать ...» в меню «Рефакторинг».

Извлечение интерфейса:

Extract Interface создает определение интерфейса из общедоступных методов класса или структуры.

Возьмем пример класса Calculator.

C#

Чтобы извлечь интерфейс из класса Calculator, щелкните правой кнопкой мыши в любом месте определения класса и выберите «Извлечь интерфейс ... из меню« Рефакторинг ».
Появится диалоговое окно Extract Interface

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

Инкапсуляция полей:

Он позволяет создавать свойство вокруг члена класса. Вы можете использовать его для инкапсуляции публичного поля или для открытия частного поля как общедоступного.

Например, предположим, что вы хотите выставить переменную-член test_Number как общедоступное свойство:

C#

Поместите курсор на test_Number и выберите Encapsulate Field ... из меню Refactor. Это вызовет диалоговое окно Encapsulate Field.

В поле «Инкапсуляция» вы можете указать свойство, которое обертывает член, задает видимость свойства и инструктирует, как обновлять текущие ссылки на элемент.
EncapsulateField может распознавать общеупотребительное соглашение об именах имен элементов и генерировать из него соответствующее имя свойства.
Это означает, что если переменная-член имеет префикс test_ или просто _, поле Encapsulate будет опускать этот префикс, предлагая имя свойства.
Конечно, вы можете указать любое имя свойства, которое вам нравится. Вы также можете указать видимость свойства (общедоступную, внутреннюю, защищенную внутреннюю, защищенную, приватную) и что делать с внешними ссылками: вы можете заставить инструмент рефакторинга заменить все ссылки на поле (внутри типа или снаружи) ссылками к новому имуществу.
Несмотря на то, что для выбора ссылочного обновления по умолчанию установлено значение «Внешний», мы рекомендуем всегда выбирать «Все», поскольку это будет способствовать ослаблению внутренней связи в самом типе и упрощает обслуживание.
Любое бизнес-правило, введенное в действие потомством, будет автоматически применяться внутри этого типа.

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

C#

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

C#

После использования рефакторинга инкапсуляции полей вы получите публичное свойство, называемое Number, а публичный член test_Number будет преобразован в частный член:

C#

Изменение подписи:

Рефакторинг позволяет вам изменить подпись метода путем добавления или удаления параметров, а рефакторинг позволяет изменить порядок параметров. Однако вы не можете изменить возвращаемый метод. Вы можете изменить подписи методов, индексаторов и конструкторов

Например, вы хотите изменить метод Add () в этом классе Calculator, чтобы использовать double вместо int parameters.

C#

Щелкните правой кнопкой мыши в любом месте метода и выберите «Изменить подпись метода» ... из всплывающего меню «Рефактор», чтобы открыть диалоговое окно «Подпись метода изменения»

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

выберите параметр number1 и нажмите кнопку «Изменить ...», чтобы открыть диалоговое окно «Параметры». Измените тип параметра на двойной.
Обратите внимание, что диалоговое окно Parameter позволяет вам изменить тип только на один из заданных типов C#, например int или string

После применения изменения подписи вам необходимо вручную изменить возвращаемый тип метода Add (), чтобы удвоить

Объемное пространство и расширения:

окружение и расширения - это автоматизация ввода кода, а не компоновка кода и структура
Surround с созданием шаблона с держателями пустых мест для обычно используемых операторов (например, foreach или обработка исключений) вокруг выделенного раздела кода.
Важно понимать, что Kill () это не то же самое, что Dispose (). Kill () обрабатывает поток выполнения, такой как завершение работы приложения или своевременное завершение потоков, тогда как Dispose () обслуживает память и управление ресурсами и распоряжается другими ресурсами, которые может иметь класс WorkerThread.
Единственная причина, по которой у вас может быть вызов Dispose () Kill (), является непредвиденным в случае, если клиентский разработчик забывает это сделать

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

 
Источник: http://www.csharpstar.com/refactoring-code-in-c/



Отзывы (через Facebook):

Оставить отзыв с помощью аккаунта FaceBook:

Автоматически конвертировать регистр в TextBox в C#

Вы можете сделать это во время разработки, хотя в этом примере я устанавливаю свойства в следующем коде, чтобы их было легко увидеть. Источник: http://csha...

15 12 2019 13:12:24

Что такое числовое продвижение? Java

Числовое продвижение, также известное как « Неявное преобразование» или «автоматическое преобразование Java», где автоматическое преобразование значения мен...

14 12 2019 9:16:40

Как заставить пользователя ввести float в C#

Это изменение замечательно просто. ( Почти так, как я это планировал, да?) Ключевым методом, определяющим, является ли новое значение TextBox допустимым, яв...

13 12 2019 2:25:25

Преобразование растрового изображения в курсор в C#

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

12 12 2019 14:14:30

Используйте объект ImageAttributes для преобразования изображения в оттенки красного, зеленого или синего в C#

В этом примере используются методы, описанные Используйте объект ImageAttributes для настройки яркости изображения на C# , чтобы преобразовать изображение...

11 12 2019 18:45:31

PHP. Объекты, шаблоны и методики программирования, 4-е издание (Мэт Зандстра)

Четвертое издание книги было пересмотрено и дополнено новым материалом. Книга начинается с обзора объектно-ориентированных возможностей PHP, в который вклю...

10 12 2019 1:31:14

Языки веб программирования: список языков для WEB разработки

Какие существуют языки программирования для WEB разработки? Веб программирование в наше время является одним из самых востребовательных направлений деятельности....

09 12 2019 6:30:32

Разница между Java и JavaScript?

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

08 12 2019 10:34:48

Метод time.sleep() в Python

Метод python sleep(), используемый для приостановки выполнения для заданного времени (в секундах). Мы можем использовать функцию ожидания python, чтобы ост...

07 12 2019 8:13:10

Печать в полном масштабе на C#

В этом примере показано, как вы можете печатать в полном масштабе, поэтому объекты, нарисованные на экране, имеют одинаковый размер при печати. Обратите вн...

06 12 2019 10:10:40

Многопользовательские игры. Разработка сетевых приложений (Глейзер Дж.)

Многопользовательские игры. Разработка сетевых приложений: Сетевые многопользовательские игры — это многомиллиардный бизнес, привлекающий десятки миллионов...

05 12 2019 0:17:21

Вызов общедоступных методов, используя их имена в C#

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

04 12 2019 0:14:27


Parse error: syntax error, unexpected ',' in /home/users/9/9161484547/domains/flash-mx.ru/lessons/926.php on line 69