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

12.04.21

Разработка - Рефакторинг и качество кода

Для тех, кто не пользуется Ctrl+Alt+R. “Контролируемый процесс улучшения кода без написания новой функциональности”, “Равносильное преобразование алгоритмов” и т.п в данной статье НЕ рассматриваются. Тема статьи: замечательные команды из подменю Рефакторинг контекстного меню редактора модулей в конфигураторе. В статье описано, как команды из подменю Рефакторинг помогают при написании кода

См. также: Быстрый ввод неудобных символов

Краткое содержание

Пользуйтесь Ctrl+Alt+R в редакторе модулей.

Мотив

Неожиданно выяснилось, что многие знакомые программисты не пользуются подменю Рефакторинг в редакторе модулей конфигуратора. Как ни странно, 
        - Описания подменю Рефакторинг нет в справке конфигуратора (платформа 8.3.16.1224);
        - Описания подменю Рефакторинг нет на Инфостарте;
        - В справке конфигуратора сочетание клавиш Ctrl+Alt+R не упоминается.
В результате решил написать об этом статью.

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

Подменю Рефакторинг доступна в редакторе текста встроенного языка в контекстном меню и в меню Текст.
Подменю Рефакторинг появилось в платформе 8.3.5, которая вышла в августе 2014 года.
Чем же команды подменю Рефакторинг отличаются от других команд меню Текст?
Главное особенность - учет семантики встроенного языка.

Команда Переименовать

Рис 1. Команда Переименовать

Команда Переименовать (Ctrl+Alt+R) - вторая в подменю Рефакторинг. Но (с моей точки зрения) является основной и самой мощной. Давно пользуюсь и до сих пор восхищаюсь простотой и мощью. Особенно Команда Переименовать понравится прокрастинирующим перфекционистам. Теперь можно бесконечно переименовывать переменные, процедуры и функции, не боясь испортить программу.
Команда предназначена для переименования имен переменных и функций.
В отличие от олдскульной Ctrl+H, команда Переименовать понимает, что именно она переименовывает.

Действие команды зависит от текущего положения курсора в тексте модуля.
Рассмотрим варианты:

  • Локальная переменная
    • Команда изменяет имя локальной переменной в пределах процедуры или функции.
  • Локальная процедура или функция
    • Команда изменяет имя процедуры или функцию в пределах модуля
  • Метод-обработчик событий элементов формы или команды в модуле формы
    • Команда изменяет имя метода-обработчика в модуле и соответствующую ссылку в палитре свойств.
  • Метод-обработчик оповещения
    • Команда изменяет имя метода и соответствующий конструктор ОписаниеОповещения.
  • Глобальная переменная (определена в Модуле приложения)
    • Команда изменяет имя глобальной переменной во всех модулях.
  • Экспортные процедуры и функции
    • Команда изменяет имя экспортной процедуры или функции во всех модулях. Действует только в модуле, в котором процедура описана.
  • Константы, комментарии, пробелы, табуляции и т.п.
    • Команда недоступна
Команда Выделить фрагмент

Из выделенного фрагмента кода создается новая процедура или функция с постфиксом Фрагмент. А вместо выделенного фрагмента вставляется вызов новой процедуры или функции.
Удобно использовать, когда надо разбить слишком длинную процедуру на несколько частей. Команда все сделает аккуратно, передаст параметры, локальные переменные будут описаны в перечислены в операторе Перем.

Команда Создать описание метода

Создает комментарии перед описанием процедуры или функции. Комментарии создаются в стандартном формате, который используется для формирования контекстной подсказки.

Команда Создать обработку оповещения

Помогает создавать обработки оповещения для асинхронных методов типа ПоказатьВопрос().
Пример:

// До команды Создать обработку оповещения
&Наклиенте
Процедура Пример()
	ПоказатьВопрос(, "Будень использовать рефакторин?", РежимДиалогаВопрос.ОК);
КонецПроцедуры

// После команды Создать обработку оповещения
&Наклиенте
Процедура Пример()
	ПоказатьВопрос(Новый ОписаниеОповещения("ПримерЗавершение", ЭтотОбъект), "Будень использовать рефакторин?", РежимДиалогаВопрос.ОК);
КонецПроцедуры

&Наклиенте
Процедура ПримерЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт

КонецПроцедуры
Подменю нерекомендуемые синхронные вызовы

Начиная с платформы 8.3.3 фирма 1С придерживается политики отказа от модальных вызовов. Команды подменю предназначена для перехода на асинхронные вызовы.

Рефакторинг в EDT
В EDT реализованы дополнительные инструменты рефакторинга.
Кратко опишу два самых интересных:
  1. В тексте модуля процедуры и функции рассматриваются как отдельные объекты. Эти объекты отображаются в панели Схема. Процедуры и функции можно быстро находить, перемещать и копировать мышкой.
  2. При переименовании метаданных (объектов или реквизитов) выводится окно предварительного просмотра изменений, похожее на окно сравнения объединения конфигураций. Изменения можно принять или отклонить.

На этом все.

См. также: Быстрый ввод неудобных символов

Ctrl+Alt+R Переименование Рефакторинг Редактор Конфигуратор Горячие Клавиши Кодирование Модули Перфекционизм Прокрастинация

См. также

Инструментарий разработчика Рефакторинг и качество кода Программист Платформа 1С v8.3 Бесплатно (free)

Расширяемый форматтер структуры модулей 1С. Умеет автоматически расставлять стандартные области и раскидывать по ним процедуры и функции модуля, оформлять стандартные комментарии к методам с помощью ИИ. Также умеет анализировать модуль - извлекать структуру вызовов, используемые поля и т.д. Реализован в виде расширения (.cfe). Можно использовать как платформу для обработки кода в своих задачах автоматизации разработки.

12.02.2025    5552    367    wonderboy    39    

113

Linux Рефакторинг и качество кода Программист Платформа 1С v8.3 Бесплатно (free)

В третьей статье по докладу Александра Кириллова, с которым он выступил на конференции INFOSTART TECH EVENT 2024, обсудим подходы к рефакторингу платформеннозависимого кода

11.02.2025    831    it-expertise    0    

3

Рефакторинг и качество кода Linux Программист Платформа 1С v8.3 Бесплатно (free)

Во второй статье по докладу Александра Кириллова, с которым он выступил на конференции INFOSTART TECH EVENT 2024, поговорим об особенностях анализа конфигурации 1С на наличие платформеннозависимого кода.

31.01.2025    1484    it-expertise    1    

7

Рефакторинг и качество кода Обновление 1С Программист Платформа 1С v8.3 Бесплатно (free)

В практике нашей специальной команды по проектам сложных обновлений 1С прошел один из самых объёмных проектов: необходимо было обновить «1С: Бухгалтерия предприятия КОРП 3.0 + БИТ.ФИНАНС». Конфигурация содержала доработки практически по всем типам объектов метаданных. Длительность проекта составила 1 год и 2 месяца и обеспечила полной загрузкой 4 разработчиков на 6 месяцев.

31.01.2025    1029    1c-izh    3    

5

Рефакторинг и качество кода Программист Стажер Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

В последнее время термин «чистый код» стал очень популярным. Появились даже курсы по данной тематике. Так что же это такое?

16.09.2024    17022    markbraer    66    

43

Рефакторинг и качество кода Программист Бесплатно (free)

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

10.09.2024    1342    acces969    4    

6

Рефакторинг и качество кода Бесплатно (free)

Для быстродействия большой базы данных важно не только оптимизировать запросы, но и соблюдать стандарты при разработке подписок на события, обработок для массового изменения данных, в реализации обработчиков обновления, расширений, регламентных заданий и в архитектуре СКД-отчетов. Расскажем о нюансах разработки компонентов большой системы.

28.08.2024    1855    Chernazem    3    

6

Рефакторинг и качество кода Программист Бесплатно (free)

SOLID – принципы проектирования программных структур (модулей). Акроним S.O.L.I.D. образован из первой буквы пяти принципов. Эти принципы делают код более гибким, упрощают разработку. Принято считать, что принципы SOLID применимы только в объектно-ориентированном программировании. Но их можно успешно использовать и в 1С. Расскажем о том, как разобраться в принципах SOLID и начать применять их при работе в 1С.

22.08.2024    12305    alex_sayan    41    

56
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kalyaka 1119 11.03.20 09:21 Сейчас в теме
С рефакторингом нужно быть осторожным. Бывало, что после рефакторинга оказывалось измененной большая часть конфигурации, хотя был рефакторинг локальной переменной. Такое возможно, если платформа вдруг решит расширить область действия рефакторинга с локальной на глобальную.
tormozit; +1 Ответить
2. pparshin 517 11.03.20 10:02 Сейчас в теме
(1) Честно говоря, такого не наблюдал при Рефакторинге в редакторе модулей,
А вот если установлено:
Параметры => Общие => Рефакторинг при изменениях в метаданных и формах => флаг При переименовании выполнять изменения в модулях, то бывает.
Я хотел написать про этот Рефакторинг, но решил не перегружать статью.
3. tormozit 7263 12.04.21 11:52 Сейчас в теме
Тоже наблюдал такое.
Частный пример https://www.hostedredmine.com/issues/923908
Глубокий анализ https://partners.v8.1c.ru/forum/t/1953952/m/1953952
Выжимка из него
Команда конфигуратора "Найти использование" не гарантирует нахождение всех даже прямых использований. Поэтому опираться на ее результаты при принятии важных решений очень опасно. Наученный горьким опытом я уже давно от нее отказался в пользу глобального поиска. Однако команда рефакторинга "Переименовать переменную" использует тот же самый механизм поиска использования и тут уже глобальная замена строки в качестве альтернативы не так хорошо подходит, т.к. сопряжена с массой тонкостей.
5. pparshin 517 14.04.21 12:19 Сейчас в теме
(4) По любой статье, опубликованной на Инфостарте можно найти документацию на официальных сайтах фирмы 1С либо в Справке. По другому и быть не может.
6. Дмитрий74Чел 239 04.04.22 13:31 Сейчас в теме
(5) это дополнение, не критика
pparshin; +1 Ответить
7. пользователь 26.09.23 09:30
Сообщение было скрыто модератором.
...
8. pparshin 517 26.09.23 10:51 Сейчас в теме
(7) Добрый день! Не совсем понятно, что имеется ввиду.
Оставьте свое сообщение