Repository navigation
3. Кабанов Дмитрий Константинович. 614 - #128
Dmitrii89-svg wants to merge 11 commits into
Conversation
EvgrafovMichail
left a comment
There was a problem hiding this comment.
Старайтесь избегать копипасты. Одну и ту же логику оформляйте в виде функции, которую затем можно переиспользовать в тех местах, где нужна ее логика. Одни и те же значения определяйте в виде переменных и используйте их вместо магических констант
| NAME_INDEX, | ||
| PRODUCT_ID_INDEX, | ||
| from .storage import ( | ||
| PRODUCT_ID_MIN, |
There was a problem hiding this comment.
Вы не поменяли значение PRODUCT_ID_MIN на 1 в этом задании. Из-за этого часть тестов была не пройдена. Это же касается и других констант из модуля storage.py в part3.
| # TODO: реализуйте функцию (используйте своё решение части 2) | ||
| return 0 | ||
| idmax = 0 | ||
| if len(storage) == 0: |
There was a problem hiding this comment.
Нарушение критерия T4. Минус 0,25 балла
| idmax = PRODUCT_ID_MIN | ||
| else: | ||
| for i in range(len(storage)): | ||
| idmax = max(storage[i][0], idmax) |
There was a problem hiding this comment.
Использование магических значений (здесь и далее - литералы для индексации полей продукта). Нарушение критерия S3. Минус балл
| if len(storage) == 0: | ||
| idmax = PRODUCT_ID_MIN | ||
| else: | ||
| for i in range(len(storage)): |
There was a problem hiding this comment.
Нарушение критерия T5. Минус 0.25 балла
| """ | ||
| # TODO: реализуйте функцию | ||
| return 0 | ||
| name, price, shtyk = fields |
There was a problem hiding this comment.
Не используйте транслитерацию для имен переменных (shtyk). Используйте валидные английские слова, т.к. с вашим кодом в будущем могут работать не только русскоязычные разработчики
| print("product name must not be blank") | ||
| return None | ||
| for product in storage: | ||
| if normalize_product_name(product[1]) == norm_name: |
There was a problem hiding this comment.
Не нужно повторно нормализовывать имя продукта из БД. Ваша функция create_product гарантирует, что имя продукта нормализуется перед записью в БД. Т.е. в БД уже лежат нормализованные значения. Повторная нормализация - лишнее действие, расходующее вычислительные ресурсы
| cmd = parts[0] | ||
| n = len(parts) | ||
|
|
||
| if cmd == "help" and n == 1: |
There was a problem hiding this comment.
Из-за использования ветвления многие проверки дублируют одну и ту же логику (например, проверка количества элементов). Это нарушение критерия S1. Минус балл.
Для того, чтобы избежать это дублирование, следовало использовать match-case
| return True | ||
|
|
||
| cmd = parts[0] | ||
| n = len(parts) |
There was a problem hiding this comment.
Имя n - непонятное имя для переменной. Нарушение критерия M2. Минус 0.5 балла
| print(f"'{line}' is not a command") | ||
| return True | ||
|
|
||
| cmd = parts[0] |
There was a problem hiding this comment.
А если ввод пользователя будет пустым ("")?)
| return rename | ||
|
|
||
|
|
||
| def get_storage_str_representation(storage: list[Product]) -> str: |
There was a problem hiding this comment.
Из-за копипасты одной и той же логики в теле функции, функция получилось очень длинной. Такие функции тяжело читать и анализировать, а как следствие - поддерживать и сопровождать.
Нарушение критерия S2. Минус балл
No description provided.