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

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 Конфигурации 1cv8 Бесплатно (free)

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

16.09.2024    15953    markbraer    66    

43

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

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

10.09.2024    1197    acces969    4    

6

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

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

28.08.2024    1534    Chernazem    3    

6

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

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

22.08.2024    11503    alex_sayan    41    

54

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

Рассмотрим основные принципы шаблона проектирования "Стратегия" на простом примере.

25.06.2024    5064    MadRave    34    

27

Рефакторинг и качество кода Программист Платформа 1С v8.3 Абонемент ($m)

В статье расскажу и покажу процесс проведения Code-review на примере обработки с GitHub.

1 стартмани

04.06.2024    6830    mrXoxot    55    

42

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

Поделюсь своим опытом аудита кода авторских продуктов с Infostart.ru как одним из элементов применения DevOps-практик внутри Инфостарт. Будет настоящий код, боевые скриншоты, внутренние мемы от команды ИТ-лаборатории Инфостарт и прочее мясо – все, что любят разработчики.

10.04.2024    14240    artbear    85    

109

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

Предлагаю вашему вниманию советы мастеров древности. Программисты прошлого использовали их, чтобы заострить разум тех, кто после них будет поддерживать код. Гуру разработки при найме старательно ищут их применение в тестовых заданиях. Новички иногда используют их ещё лучше, чем матёрые ниндзя. Прочитайте их и решите, кто вы: ниндзя, новичок или, может быть, гуру? (Адаптация статьи "Ниндзя-код" из учебника JavaScript)

01.04.2024    4561    DrAku1a    15    

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