oscript-library / oscript-library/gitsync
Отрефакторить сильно дублирующий код
Open
Nobody has claimed this yet.
help wanted
techical debt
- Dominant language
- 1C Enterprise
- Stars
- 333
- Forks
- 98
- PR merge metrics
- No merged PRs in 30d
Description
- выделить спец.метод для получения значения по умолчания
ПутьКХранилищу = Параметр( ПараметрыКоманды, "ПутьКХранилищу", "");
илиНачальнаяВерсия = Параметр( ПараметрыКоманды, "-minversion", 0);
и простейший код метода
Функция Параметр(Знач Коллекция, Ключ, ЗначениеПоУмолчанию)
Рез = Коллекция[Ключ];
Если Рез = Неопределено
Рез = ЗначениеПоУмолчанию;
КонецЕсли;
Лог.Отладка("%1 = %2", Ключ, Рез);
Возврат Рез;
КонецФункции
и тогда код из 92 строк (ниже) превратится в код в ~20 строк :)
и таких мест немало :(
Код, например, в команде Sync - почти 100 строк (65 -157 строки) !!
ПутьКХранилищу = ПараметрыКоманды["ПутьКХранилищу"];
URLРепозитория = ПараметрыКоманды["URLРепозитория"];
ЛокальныйКаталогГит = ПараметрыКоманды["ЛокальныйКаталогГит"];
ДоменПочты = ПараметрыКоманды["-email"];
ВерсияПлатформы = ПараметрыКоманды["-v8version"];
НачальнаяВерсия = ПараметрыКоманды["-minversion"];
КонечнаяВерсия = ПараметрыКоманды["-maxversion"];
Формат = ПараметрыКоманды["-format"];
ИмяВетки = ПараметрыКоманды["-branch"];
Лимит = ПараметрыКоманды["-limit"];
КоличествоКоммитовДоPush = ПараметрыКоманды["-push-every-n-commits"];
ПереименовыватьФайлМодуляОбычнойФормы = ПараметрыКоманды["-process-fatform-modules"];
ПроверитьАвторовХранилища = ПараметрыКоманды["-check-authors"];
ПрерватьВыполнениеБезКомментарияКВерсии = ПараметрыКоманды["-stop-if-empty-comment"];
АвтоматическаяУстановкаТэговПоВерсиям = ПараметрыКоманды["-auto-set-tags"];
Если НачальнаяВерсия = Неопределено Тогда
НачальнаяВерсия = 0;
КонецЕсли;
Если ПроверитьАвторовХранилища = Неопределено Тогда
ПроверитьАвторовХранилища = Ложь;
КонецЕсли;
Если КонечнаяВерсия = Неопределено Тогда
КонечнаяВерсия = 0;
КонецЕсли;
Если Лимит = Неопределено Тогда
Лимит = 0;
КонецЕсли;
Если КоличествоКоммитовДоPush = Неопределено Тогда
КоличествоКоммитовДоPush = 0;
КонецЕсли;
Если ПрерватьВыполнениеБезКомментарияКВерсии = Неопределено Тогда
ПрерватьВыполнениеБезКомментарияКВерсии = Ложь;
КонецЕсли;
Если АвтоматическаяУстановкаТэговПоВерсиям = Неопределено Тогда
АвтоматическаяУстановкаТэговПоВерсиям = Ложь;
КонецЕсли;
НачальнаяВерсия = Число(НачальнаяВерсия);
КонечнаяВерсия = Число(КонечнаяВерсия);
Лимит = Число(Лимит);
КоличествоКоммитовДоPush = Число(КоличествоКоммитовДоPush);
Если ЛокальныйКаталогГит = Неопределено Тогда
ЛокальныйКаталогГит = ТекущийКаталог();
КонецЕсли;
Если Формат = Неопределено Тогда
Формат = РежимВыгрузкиФайлов.Авто;
КонецЕсли;
Если ИмяВетки = Неопределено Тогда
ИмяВетки = "master";
КонецЕсли;
Лог.Отладка("ПутьКХранилищу = " + ПутьКХранилищу);
Лог.Отладка("URLРепозитория = " + URLРепозитория);
Лог.Отладка("ЛокальныйКаталогГит = " + ЛокальныйКаталогГит);
Лог.Отладка("ДоменПочты = " + ДоменПочты);
Лог.Отладка("ВерсияПлатформы = " + ВерсияПлатформы);
Лог.Отладка("Формат = " + Формат);
Лог.Отладка("ИмяВетки = " + ИмяВетки);
Лог.Отладка("НачальнаяВерсия = " + НачальнаяВерсия);
Лог.Отладка("КонечнаяВерсия = " + КонечнаяВерсия);
Лог.Отладка("Лимит = " + Лимит);
Лог.Отладка("КоличествоКоммитовДоPush = " + КоличествоКоммитовДоPush);
Лог.Отладка("ПроверитьАвторовХранилища = " + ПроверитьАвторовХранилища);
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the Sync command code around lines 65–157, especially its repeated reads from ПараметрыКоманды, default assignments, conversions, and logging. Review the proposed Параметр helper and identify other similar locations mentioned by the issue. Done means the duplicated parameter/default handling is consolidated while Sync keeps the same behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- git
- Domain
- cli
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100