Skip to content

Commit

Permalink
Рефакторинг, логирование
Browse files Browse the repository at this point in the history
  • Loading branch information
nixel2007 committed Feb 23, 2024
1 parent 1e47b09 commit 6c9e2f9
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 24 deletions.
28 changes: 25 additions & 3 deletions src/internal/Классы/АннотацияНапильник.os
Original file line number Diff line number Diff line change
@@ -1,18 +1,40 @@
#Использовать asserts
#Использовать collectionos

Перем _ПрименяетсяТолькоНа;

Check warning on line 4 in src/internal/Классы/АннотацияНапильник.os

View check run for this annotation

sonar.openbsl.ru qa-bot / autumn Sonarqube Results

src/internal/Классы/АннотацияНапильник.os#L4

Добавьте описание переменной

Функция ПрименяетсяТолькоНа() Экспорт
Возврат _ПрименяетсяТолькоНа;
Функция МожетПрименятьсяНа(ОпределениеЖелудя) Экспорт

НапильникМожетПрименяться = Ложь;

Если _ПрименяетсяТолькоНа.Количество() = 0 Тогда
НапильникМожетПрименяться = Истина;

Check warning on line 11 in src/internal/Классы/АннотацияНапильник.os

View check run for this annotation

sonar.openbsl.ru qa-bot / autumn Sonarqube Results

src/internal/Классы/АннотацияНапильник.os#L11

Синтаксическая конструкция "Если...Тогда...ИначеЕсли..." содержит повторяющиеся блоки кода
ИначеЕсли _ПрименяетсяТолькоНа.Содержит(ОпределениеЖелудя.Имя()) Тогда
НапильникМожетПрименяться = Истина;
Иначе

Для Каждого ПрозвищеЖелудя Из ОпределениеЖелудя.Прозвища() Цикл
Если _ПрименяетсяТолькоНа.Содержит(ПрозвищеЖелудя) Тогда
НапильникМожетПрименяться = Истина;
Прервать;
КонецЕсли;
КонецЦикла;

КонецЕсли;

Возврат НапильникМожетПрименяться;

КонецФункции

&Аннотация("Напильник")
&Прозвище("Напильник")
Процедура ПриСозданииОбъекта(Значение = "", &Повторяемый ПрименяетсяТолькоНа = Неопределено)

_ПрименяетсяТолькоНа = Новый МножествоСоответствие();
Для Каждого МестоПрименения Из ПрименяетсяТолькоНа Цикл
Ожидаем.Что(МестоПрименения, "Ограничение применения напильника должно быть задано строкой").ИмеетТип("Строка");

_ПрименяетсяТолькоНа.Добавить(МестоПрименения);
КонецЦикла;

_ПрименяетсяТолькоНа = ПрименяетсяТолькоНа;
КонецПроцедуры
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
Перем _ПрименятьТолькоНапильники;

Check warning on line 4 in src/internal/Классы/АннотацияОсобоеОбращение.os

View check run for this annotation

sonar.openbsl.ru qa-bot / autumn Sonarqube Results

src/internal/Классы/АннотацияОсобоеОбращение.os#L4

Добавьте описание переменной
Перем _НеПрименятьНапильники;

Check warning on line 5 in src/internal/Классы/АннотацияОсобоеОбращение.os

View check run for this annotation

sonar.openbsl.ru qa-bot / autumn Sonarqube Results

src/internal/Классы/АннотацияОсобоеОбращение.os#L5

Добавьте описание переменной

Функция НапильникПрименяется(ИмяНапильника) Экспорт
Функция НапильникМожетПрименяться(ИмяНапильника) Экспорт

Если _ОтключитьВсеНапильники Тогда
Возврат Ложь;
Expand Down
47 changes: 27 additions & 20 deletions src/internal/Классы/ФабрикаЖелудей.os
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@
// Массив из ОпределениеЖелудя - Список инициализируемых в данный момент напильников.
Перем ИнициализируемыеНапильники;

// Лог - Логгер ФабрикиЖелудей.
Перем Лог;

#КонецОбласти

#Область СлужебныйПрограммныйИнтерфейс
Expand Down Expand Up @@ -606,13 +609,16 @@

Функция ОпределитьПрименяемыеНапильники(ОпределениеЖелудя)

ПрименяемыеНапильники = КэшПрименяемыхНапильников.Получить(ОпределениеЖелудя.Имя());
ИмяЖелудя = ОпределениеЖелудя.Имя();

ПрименяемыеНапильники = КэшПрименяемыхНапильников.Получить(ИмяЖелудя);
Если ПрименяемыеНапильники <> Неопределено Тогда
Возврат ПрименяемыеНапильники;
КонецЕсли;

Лог.Отладка("Кэш применяемых напильников для желудя %1 пуст. Выполняется расчет...", ИмяЖелудя);

ПрименяемыеНапильники = Новый Массив;
ПрозвищаЖелудя = ОпределениеЖелудя.Прозвища();

АннотацииЗавязи = ОпределениеЖелудя.Завязь().ДанныеМетода().Аннотации;
АннотацияОсобоеОбращение = РаботаСАннотациями.НайтиАннотацию(АннотацииЗавязи, "ОсобоеОбращение");
Expand All @@ -623,28 +629,28 @@

Для Каждого ОпределениеНапильника Из ОпределенияНапильников Цикл

ИмяНапильника = ОпределениеНапильника.Имя();
Лог.Отладка("Проверка применения напильника %1", ИмяНапильника);

КорневаяАннотация = ОпределениеНапильника.КорневаяАннотация();
ПрименяетсяТолькоНа = КорневаяАннотация.ПрименяетсяТолькоНа();

НапильникМожетПрименяться = Ложь;
НапильникМожетПрименяться = КорневаяАннотация.МожетПрименятьсяНа(ОпределениеЖелудя);

Если ПрименяетсяТолькоНа.Количество() = 0 Тогда
НапильникМожетПрименяться = Истина;
ИначеЕсли ПрименяетсяТолькоНа.Найти(ОпределениеЖелудя.Имя()) <> Неопределено Тогда
НапильникМожетПрименяться = Истина;
Иначе

Для Каждого ПрозвищеЖелудя Из ПрозвищаЖелудя Цикл
Если ПрименяетсяТолькоНа.Найти(ПрозвищеЖелудя) <> Неопределено Тогда
НапильникМожетПрименяться = Истина;
Прервать;
КонецЕсли;
КонецЦикла;

КонецЕсли;
Лог.Отладка("Напильник %1 может применяться на желуде %2: %3",
ИмяНапильника,
ИмяЖелудя,
НапильникМожетПрименяться
);

Если НапильникМожетПрименяться И ОбъектАннотацииОсобоеОбращение <> Неопределено Тогда
НапильникМожетПрименяться = ОбъектАннотацииОсобоеОбращение.НапильникПрименяется(ОпределениеНапильника.Имя());
НапильникМожетПрименяться = ОбъектАннотацииОсобоеОбращение.НапильникМожетПрименяться(ИмяНапильника);

Лог.Отладка(
"Желудь %1 требует особого обращения. Напильник %2 применяется: %3",
ИмяЖелудя,
ИмяНапильника,
НапильникМожетПрименяться
);
КонецЕсли;

Если НапильникМожетПрименяться Тогда
Expand All @@ -653,7 +659,7 @@

КонецЦикла;

КэшПрименяемыхНапильников.Вставить(ОпределениеЖелудя.Имя(), ПрименяемыеНапильники);
КэшПрименяемыхНапильников.Вставить(ИмяЖелудя, ПрименяемыеНапильники);

Возврат ПрименяемыеНапильники;

Expand All @@ -678,6 +684,7 @@
ОпределенияНапильников = Новый Массив();
КэшПрименяемыхНапильников = Новый Соответствие();

Лог = Логирование.ПолучитьЛог("oscript.lib.autumn.core.ФабрикаЖелудей");
КонецПроцедуры

#КонецОбласти

0 comments on commit 6c9e2f9

Please sign in to comment.