Скрипт рефакторинга. Кто-то вообще пользуется?

Обсуждение написания скриптов и аддинов для Снегопата, а также его объектной модели.
EvilBeaver
Сообщения: 83
Зарегистрирован: 26 май 2014, 13:53

Скрипт рефакторинга. Кто-то вообще пользуется?

Сообщение EvilBeaver »

Одна из самых нужных мне вещей - средства рефакторинга в 8.2, как известно, отсутствуют.
Был неприятно удивлен наличием детских багов в скрипте refactoring.js.
Например, если выделяем метод и говорим, что параметры передавать надо по "Знач", то само место вызова тоже получает добавки "Знач", что, понятно, ошибочно.

Код: Выделить всё

А = 1;
Б = 2;

НовыйМетод(Знач Б, Знач А); // здесь не должно быть "Знач" у параметров

// этот метод выделен скриптом рефакторинга
Процедура НовыйМетод(Знач Б, Знач А)
    ;
КонецПроцедуры



Это из самого страшного, но есть и другие сырости.
В целом скрипт больше похож на демонстрацию концепта, а не на рабочий вариант. Им кто-то пользуется?
EvilBeaver
Сообщения: 83
Зарегистрирован: 26 май 2014, 13:53

Re: Скрипт рефакторинга. Кто-то вообще пользуется?

Сообщение EvilBeaver »

Похоже, что никто не пользуется. А если я его перепишу - будете пользоваться?
SiriuS
Сообщения: 103
Зарегистрирован: 19 сен 2011, 11:14

Re: Скрипт рефакторинга. Кто-то вообще пользуется?

Сообщение SiriuS »

EvilBeaver писал(а):Похоже, что никто не пользуется. А если я его перепишу - будете пользоваться?


Конечно будем. И даже готовы генерировать новые идеи по функционалу скрипта
Аватара пользователя
artbear
Сообщения: 1085
Зарегистрирован: 24 авг 2011, 15:36
Контактная информация:

Re: Скрипт рефакторинга. Кто-то вообще пользуется?

Сообщение artbear »

EvilBeaver писал(а):Похоже, что никто не пользуется. А если я его перепишу - будете пользоваться?

Пользуемся как раз выделением метода.
Но ошибки есть, но не так часто, чтобы взяться и самому переписать :)
Если перепишешь, будем рады.
Тестовых кейсов могу накидать.
JohnyDeath
Сообщения: 722
Зарегистрирован: 24 авг 2011, 15:32

Re: Скрипт рефакторинга. Кто-то вообще пользуется?

Сообщение JohnyDeath »

Конечно будем. Текущий скрипт у меня не взлетел по причине периодических конфликтов и недопониманий со SciColorer-ом. Потом про него вообще забыл.
EvilBeaver
Сообщения: 83
Зарегистрирован: 26 май 2014, 13:53

Re: Скрипт рефакторинга. Кто-то вообще пользуется?

Сообщение EvilBeaver »

artbear писал(а):
EvilBeaver писал(а):Похоже, что никто не пользуется. А если я его перепишу - будете пользоваться?

Тестовых кейсов могу накидать.


Да, сделай, пожалуйста.
Ndochp
Сообщения: 64
Зарегистрирован: 19 фев 2013, 10:29

Re: Скрипт рефакторинга. Кто-то вообще пользуется?

Сообщение Ndochp »

На вике страницы скрипта не нашел, здесь вроде тестов хотели - вот некорректно обрабатывающаяся ситуация (код приведен не полностью):

Код: Выделить всё

Процедура ВосстановитьЗначенияРучныхКорректировокТабличнойЧасти(ИмяТЧ, СкорректированныеСтроки)
   Перем НеобходимоПредупредитьОбИзмененияхБУ, СтрокаДляКорректировки, МассивСтрокДляКорректировки, СкорректированнаяСтрока;
   Перем СписокКорректируемыхКолонок;//список колонок, которые могут корректироваться пользователем, их корректируем, остальные сверяем
   Перем СпецСумма;//Сумма долгосрочного и краткосрочного для 91, 99, потом для проценнтов и тд
   
   МассивКорректируемыхКолонок = ПолучитьМассивКорректируемыхКолонок();
   #Если _ Тогда
      МассивКорректируемыхКолонок = Новый Массив;
   #КонецЕсли
   Для каждого  СкорректированнаяСтрока Из СкорректированныеСтроки Цикл
      НеобходимоПредупредитьОбИзмененияхБУ = Ложь;
      Отбор = ПолучитьКлючСтроки(СкорректированнаяСтрока);
      МассивСтрокДляКорректировки = ЭтотОбъект[ИмяТЧ].НайтиСтроки(Отбор);
      Если МассивСтрокДляКорректировки.Количество() = 0 тогда
         СтрокаДляКорректировки = ЭтотОбъект[ИмяТЧ].Добавить();
      ИначеЕсли МассивСтрокДляКорректировки.Количество() = 1 тогда
         СтрокаДляКорректировки = МассивСтрокДляКорректировки[0];
      Иначе
         ВызватьИсключение "201409101233 Нашлось несколько строк с одним ключем";
      КонецЕсли;   

Выделяю строки с "отбор =" до конца блока. Автоматом получается

Код: Выделить всё

Функция ПолучитьСтрокуДляКорректировки(ИмяТЧ)
   Отбор = ПолучитьКлючСтроки(СкорректированнаяСтрока);
   МассивСтрокДляКорректировки = ЭтотОбъект[ИмяТЧ].НайтиСтроки(Отбор);
   Если МассивСтрокДляКорректировки.Количество() = 0 тогда
      СтрокаДляКорректировки = ЭтотОбъект[ИмяТЧ].Добавить();
   ИначеЕсли МассивСтрокДляКорректировки.Количество() = 1 тогда
      СтрокаДляКорректировки = МассивСтрокДляКорректировки[0];
   Иначе
      ВызватьИсключение "201409101233 Нашлось несколько строк с одним ключем";
   КонецЕсли;   
   Возврат СтрокаДляКорректировки;
КонецФункции

То есть теряется параметр "СкорректированнаяСтрока" несмотря на то, что выше эта переменная явно объявлена как локальная переменная модуля (в первой строке "Перем").
alonehobo
Сообщения: 64
Зарегистрирован: 14 май 2014, 12:17

Re: Скрипт рефакторинга. Кто-то вообще пользуется?

Сообщение alonehobo »

Добавил по аналогии с выделением метода - выделение переменной;
Вложения
Image 2.png
Image 2.png (9.09 КБ) 109511 просмотров
Image 3.png
Image 3.png (3.82 КБ) 109511 просмотров
refactoring1.zip
(6.81 КБ) 2124 скачивания
EvilBeaver
Сообщения: 83
Зарегистрирован: 26 май 2014, 13:53

Re: Скрипт рефакторинга. Кто-то вообще пользуется?

Сообщение EvilBeaver »

alonehobo писал(а):Добавил по аналогии с выделением метода - выделение переменной;

Отлично. Добавьте в основной репозиторий, пожалуйста.
alonehobo
Сообщения: 64
Зарегистрирован: 14 май 2014, 12:17

Re: Скрипт рефакторинга. Кто-то вообще пользуется?

Сообщение alonehobo »

Не имею возможности
Ответить