Skip to content

3. Сабуров Ярослав Семенович. 614 - #126

Open
Nerey999 wants to merge 20 commits into
python-department:mainfrom
Nerey999:task3
Open

Nerey999 wants to merge 20 commits into
python-department:mainfrom
Nerey999:task3

Conversation

@Nerey999

Copy link
Copy Markdown

No description provided.

@Nerey999 Nerey999 changed the title Task3 3. Сабуров Ярослав Семенович. 614 Oct 12, 2026
@github-actions github-actions Bot added the 614 label Oct 12, 2026

@EvgrafovMichail EvgrafovMichail left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вы очень злоупотребляете включениями. Такое обилие включений в коде приводит к тому, что его становится сложнее читать и понимать. Старайтесь писать код с мыслью о том, что его будут читать другие разработчики, и делать код максимально понятным даже для новичков.

Comment thread src/part3/crud.py
return 0
normalized_name = normalize_product_name(fields[0])

if normalized_name in [x[NAME_INDEX] for x in storage]:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Такая проверка приводит к двойному обходу storage. Также требуется память дополнительная для хранения списка имен. Можно было бы проверить за один обход или с помощью any

Comment thread src/part3/crud.py
new_record = dict_to_product(dict_record)

storage.append(new_record)
storage.sort()

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не очень понял необходимость в сортировке

Comment thread src/part3/crud.py
"""
# TODO: реализуйте функцию (используйте своё решение части 2)
return (0, "", Decimal(0), 0)
record = [x for x in storage if x[PRODUCT_ID_INDEX] == product_id]

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можно было бы сделать это без спискового включения. Так можно было бы выйти из функции сразу, как только запись с нужным ID найдена. В текущей реализации придется перебрать все записи хранилища, даже если запись с искомым ID первая

Comment thread src/part3/crud.py
print(f"product name '{normalized_name}' is already taken")
return None

dict_record = {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Формирование этого словаря следовало бы унести в функцию dict_to_product. А так логика составления словаря дублируется. Нарушение критерия S1. Минус балл

Comment thread src/part3/crud.py
dict_record = {
PRODUCT_ID_INDEX: record[PRODUCT_ID_INDEX],
NAME_INDEX: normalized_name,
PRICE_INDEX: normalize_price(fields[1]),

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нарушение критерия S3. Минус балл

Comment thread src/part3/utils.py
for inx, header in enumerate(TABLE_HEADERS)
}

def _row(cells: list[str]) -> str:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Старайтесь не использовать вложенные функции без крайней необходимости

Comment thread src/part3/utils.py
return " ".join(x for x in name.strip().lower().split())


def get_storage_str_representation(storage: list[Product]) -> str:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Функция не соответствует принципу единой ответственности: в ней происходит и определение максимальных значений, и форматирование строк.

Нарушение критерия S2. Минус балл

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants