Снегопат
https://snegopat.ru/forum/

Скрипт рефакторинга. Кто-то вообще пользуется?
https://snegopat.ru/forum/viewtopic.php?f=3&t=634
Страница 1 из 3

Автор:  EvilBeaver [ 05 авг 2014, 09:22 ]
Заголовок сообщения:  Скрипт рефакторинга. Кто-то вообще пользуется?

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

Код:
А = 1;
Б = 2;

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

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



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

Автор:  EvilBeaver [ 06 авг 2014, 08:56 ]
Заголовок сообщения:  Re: Скрипт рефакторинга. Кто-то вообще пользуется?

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

Автор:  SiriuS [ 06 авг 2014, 12:41 ]
Заголовок сообщения:  Re: Скрипт рефакторинга. Кто-то вообще пользуется?

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


Конечно будем. И даже готовы генерировать новые идеи по функционалу скрипта

Автор:  artbear [ 06 авг 2014, 16:25 ]
Заголовок сообщения:  Re: Скрипт рефакторинга. Кто-то вообще пользуется?

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

Пользуемся как раз выделением метода.
Но ошибки есть, но не так часто, чтобы взяться и самому переписать :)
Если перепишешь, будем рады.
Тестовых кейсов могу накидать.

Автор:  JohnyDeath [ 07 авг 2014, 10:39 ]
Заголовок сообщения:  Re: Скрипт рефакторинга. Кто-то вообще пользуется?

Конечно будем. Текущий скрипт у меня не взлетел по причине периодических конфликтов и недопониманий со SciColorer-ом. Потом про него вообще забыл.

Автор:  EvilBeaver [ 08 авг 2014, 11:33 ]
Заголовок сообщения:  Re: Скрипт рефакторинга. Кто-то вообще пользуется?

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

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


Да, сделай, пожалуйста.

Автор:  Ndochp [ 11 сен 2014, 11:38 ]
Заголовок сообщения:  Re: Скрипт рефакторинга. Кто-то вообще пользуется?

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

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

То есть теряется параметр "СкорректированнаяСтрока" несмотря на то, что выше эта переменная явно объявлена как локальная переменная модуля (в первой строке "Перем").

Автор:  alonehobo [ 09 окт 2014, 06:50 ]
Заголовок сообщения:  Re: Скрипт рефакторинга. Кто-то вообще пользуется?

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

Вложения:
Image 2.png
Image 2.png [ 9.09 КБ | Просмотров: 32769 ]
Image 3.png
Image 3.png [ 3.82 КБ | Просмотров: 32769 ]
refactoring1.zip [6.81 КБ]
Скачиваний: 1287

Автор:  EvilBeaver [ 09 окт 2014, 11:01 ]
Заголовок сообщения:  Re: Скрипт рефакторинга. Кто-то вообще пользуется?

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

Отлично. Добавьте в основной репозиторий, пожалуйста.

Автор:  alonehobo [ 09 окт 2014, 11:11 ]
Заголовок сообщения:  Re: Скрипт рефакторинга. Кто-то вообще пользуется?

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

Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/