Skip to content

3. Кабанов Дмитрий Константинович. 614 - #128

Open
Dmitrii89-svg wants to merge 11 commits into
python-department:mainfrom
Dmitrii89-svg:task3
Open

Dmitrii89-svg wants to merge 11 commits into
python-department:mainfrom
Dmitrii89-svg:task3

Conversation

@Dmitrii89-svg

Copy link
Copy Markdown

No description provided.

@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
NAME_INDEX,
PRODUCT_ID_INDEX,
from .storage import (
PRODUCT_ID_MIN,

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.

Вы не поменяли значение PRODUCT_ID_MIN на 1 в этом задании. Из-за этого часть тестов была не пройдена. Это же касается и других констант из модуля storage.py в part3.

Comment thread src/part3/crud.py
# TODO: реализуйте функцию (используйте своё решение части 2)
return 0
idmax = 0
if len(storage) == 0:

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.

Нарушение критерия T4. Минус 0,25 балла

Comment thread src/part3/crud.py
idmax = PRODUCT_ID_MIN
else:
for i in range(len(storage)):
idmax = max(storage[i][0], idmax)

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/crud.py
if len(storage) == 0:
idmax = PRODUCT_ID_MIN
else:
for i in range(len(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.

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

Comment thread src/part3/crud.py
"""
# TODO: реализуйте функцию
return 0
name, price, shtyk = fields

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.

Не используйте транслитерацию для имен переменных (shtyk). Используйте валидные английские слова, т.к. с вашим кодом в будущем могут работать не только русскоязычные разработчики

Comment thread src/part3/crud.py
print("product name must not be blank")
return None
for product in storage:
if normalize_product_name(product[1]) == norm_name:

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.

Не нужно повторно нормализовывать имя продукта из БД. Ваша функция create_product гарантирует, что имя продукта нормализуется перед записью в БД. Т.е. в БД уже лежат нормализованные значения. Повторная нормализация - лишнее действие, расходующее вычислительные ресурсы

Comment thread src/part3/run_admin.py
cmd = parts[0]
n = len(parts)

if cmd == "help" and n == 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.

Из-за использования ветвления многие проверки дублируют одну и ту же логику (например, проверка количества элементов). Это нарушение критерия S1. Минус балл.

Для того, чтобы избежать это дублирование, следовало использовать match-case

Comment thread src/part3/run_admin.py
return True

cmd = parts[0]
n = len(parts)

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.

Имя n - непонятное имя для переменной. Нарушение критерия M2. Минус 0.5 балла

Comment thread src/part3/run_admin.py
print(f"'{line}' is not a command")
return True

cmd = parts[0]

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 rename


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