-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Возможность ограничения применения напильников на желуде #89
Changes from 9 commits
77deecd
095d509
4e3243a
b6d9f67
14e2fca
1e47b09
6c9e2f9
e20022d
bf19afb
a4cf36a
97da09e
0107502
75c6b08
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,19 +10,7 @@ jobs: | |
uses: autumn-library/workflows/.github/workflows/sonar.yml@coverage | ||
with: | ||
github_repository: autumn-library/autumn | ||
codecov: true | ||
secrets: | ||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | ||
coverage: | ||
runs-on: ubuntu-latest | ||
needs: [sonar] | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Download artifacts | ||
uses: actions/download-artifact@v4 | ||
- name: Upload coverage reports to Codecov | ||
uses: codecov/[email protected] | ||
with: | ||
token: ${{ secrets.CODECOV_TOKEN }} | ||
slug: autumn-library/autumn | ||
|
||
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,40 @@ | ||
#Использовать asserts | ||
#Использовать collectionos | ||
|
||
Перем _ПрименяетсяТолькоНа; | ||
|
||
Функция МожетПрименятьсяНа(ОпределениеЖелудя) Экспорт | ||
|
||
НапильникМожетПрименяться = Ложь; | ||
|
||
Если _ПрименяетсяТолькоНа.Количество() = 0 Тогда | ||
НапильникМожетПрименяться = Истина; | ||
ИначеЕсли _ПрименяетсяТолькоНа.Содержит(ОпределениеЖелудя.Имя()) Тогда | ||
НапильникМожетПрименяться = Истина; | ||
Иначе | ||
|
||
Для Каждого ПрозвищеЖелудя Из ОпределениеЖелудя.Прозвища() Цикл | ||
Если _ПрименяетсяТолькоНа.Содержит(ПрозвищеЖелудя) Тогда | ||
НапильникМожетПрименяться = Истина; | ||
Прервать; | ||
КонецЕсли; | ||
КонецЦикла; | ||
|
||
КонецЕсли; | ||
|
||
Возврат НапильникМожетПрименяться; | ||
|
||
КонецФункции | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Структура условий в функции There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Предложи свой вариант There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @nixel2007, вот оптимизированный вариант функции
Этот подход позволяет избежать дублирования, собирая все идентификаторы (имя и прозвища) в один массив и выполняя один цикл для проверки наличия в There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Проанализируй последние изменения в функции ПрочитатьПрозвища() и предложи новый вариант в виде code suggestion There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @nixel2007, вот предложение по оптимизации функции
Этот подход позволяет более гибко управлять включением значения по умолчанию в результаты, что может быть полезно в различных сценариях использования функции. Analysis chainScripts executedThe following scripts were executed for the analysis: Script: #!/bin/bash
# Search for the function `ПрочитатьПрозвища` within the codebase.
ast-grep --lang oneC --pattern $'Функция ПрочитатьПрозвища($$$) {
$$$
}'
Length of output: 184 Script: #!/bin/bash
# Search for the function `ПрочитатьПрозвища` within the codebase using ripgrep.
rg "Функция ПрочитатьПрозвища"
Length of output: 128 Script: #!/bin/bash
# Extract the content of the function `ПрочитатьПрозвища` from the file `src/internal/Классы/ФабрикаЖелудей.os`.
rg --context 30 "Функция ПрочитатьПрозвища" src/internal/Классы/ФабрикаЖелудей.os
Length of output: 1890 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Меня интересует новый вариант МожетПрименятьсяНа, а не ПолучитьПрозвища There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @nixel2007, извините за путаницу. Вот предложенный вариант функции
Этот вариант объединяет проверку имени и прозвищ желудя в один цикл, что упрощает структуру функции и уменьшает дублирование кода. Надеюсь, это соответствует вашим ожиданиям. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Прозвища теперь всегда содержат имя жёлудя, нет смысла добавлять его ещё раз There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @nixel2007, учитывая ваше замечание о том, что прозвища теперь всегда включают имя жёлудя, предлагаю следующий упрощённый вариант функции
Этот вариант учитывает ваше замечание и оптимизирует проверку применимости напильника, исключая необходимость явного добавления имени жёлудя в список идентификаторов для проверки. 🐰💭 New Learnings Added
|
||
|
||
&Аннотация("Напильник") | ||
&Прозвище("Напильник") | ||
Процедура ПриСозданииОбъекта(Значение = "") | ||
Процедура ПриСозданииОбъекта(Значение = "", &Повторяемый ПрименяетсяТолькоНа = Неопределено) | ||
|
||
_ПрименяетсяТолькоНа = Новый МножествоСоответствие(); | ||
Для Каждого МестоПрименения Из ПрименяетсяТолькоНа Цикл | ||
Ожидаем.Что(МестоПрименения, "Ограничение применения напильника должно быть задано строкой").ИмеетТип("Строка"); | ||
|
||
_ПрименяетсяТолькоНа.Добавить(МестоПрименения); | ||
КонецЦикла; | ||
|
||
КонецПроцедуры |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
#Использовать asserts | ||
|
||
Перем _ОтключитьВсеНапильники; | ||
Перем _ПрименятьТолькоНапильники; | ||
Перем _НеПрименятьНапильники; | ||
Comment on lines
+3
to
+5
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Добавьте описания переменных |
||
|
||
Функция НапильникМожетПрименяться(ИмяНапильника) Экспорт | ||
|
||
Если _ОтключитьВсеНапильники Тогда | ||
Возврат Ложь; | ||
КонецЕсли; | ||
|
||
Если _ПрименятьТолькоНапильники.Количество() > 0 Тогда | ||
Возврат _ПрименятьТолькоНапильники.Найти(ИмяНапильника) <> Неопределено; | ||
Иначе | ||
Возврат _НеПрименятьНапильники.Найти(ИмяНапильника) = Неопределено; | ||
КонецЕсли; | ||
|
||
КонецФункции | ||
|
||
&Аннотация("ОсобоеОбращение") | ||
Процедура ПриСозданииОбъекта( | ||
ОтключитьВсеНапильники = Ложь, | ||
&Повторяемый ПрименятьТолькоНапильник = Неопределено, | ||
&Повторяемый НеПрименятьНапильник = Неопределено | ||
) | ||
|
||
Для Каждого МестоПрименения Из ПрименятьТолькоНапильник Цикл | ||
Ожидаем.Что(МестоПрименения, "Ограничение ""только"" применения напильника должно быть задано строкой") | ||
.ИмеетТип("Строка"); | ||
КонецЦикла; | ||
|
||
Для Каждого МестоПрименения Из НеПрименятьНапильник Цикл | ||
Ожидаем.Что(МестоПрименения, "Ограничение ""не"" применения напильника должно быть задано строкой") | ||
.ИмеетТип("Строка"); | ||
КонецЦикла; | ||
|
||
Если ОтключитьВсеНапильники И ПрименятьТолькоНапильник.Количество() > 0 Тогда | ||
ВызватьИсключение "Нельзя одновременно отключать все напильники и задавать ограничения ""только"""; | ||
КонецЕсли; | ||
|
||
Если ОтключитьВсеНапильники И НеПрименятьНапильник.Количество() > 0 Тогда | ||
ВызватьИсключение "Нельзя одновременно отключать все напильники и задавать ограничения ""не"""; | ||
КонецЕсли; | ||
|
||
Если ПрименятьТолькоНапильник.Количество() > 0 И НеПрименятьНапильник.Количество() > 0 Тогда | ||
ВызватьИсключение "Нельзя одновременно задавать ограничения ""только"" и ""не"""; | ||
КонецЕсли; | ||
|
||
_ОтключитьВсеНапильники = ОтключитьВсеНапильники; | ||
_ПрименятьТолькоНапильники = ПрименятьТолькоНапильник; | ||
_НеПрименятьНапильники = НеПрименятьНапильник; | ||
|
||
КонецПроцедуры |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Добавьте описание переменной
_ПрименяетсяТолькоНа
для улучшения читаемости кода. Это поможет другим разработчикам быстрее понять её назначение.