oscript-library / oscript-library/gitsync

Отрефакторить сильно дублирующий код

Open
#98 3 comments 0 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.