Repository navigation
Conversation
EvgrafovMichail
left a comment
There was a problem hiding this comment.
Вы очень злоупотребляете включениями. Такое обилие включений в коде приводит к тому, что его становится сложнее читать и понимать. Старайтесь писать код с мыслью о том, что его будут читать другие разработчики, и делать код максимально понятным даже для новичков.
| return 0 | ||
| normalized_name = normalize_product_name(fields[0]) | ||
|
|
||
| if normalized_name in [x[NAME_INDEX] for x in storage]: |
There was a problem hiding this comment.
Такая проверка приводит к двойному обходу storage. Также требуется память дополнительная для хранения списка имен. Можно было бы проверить за один обход или с помощью any
| new_record = dict_to_product(dict_record) | ||
|
|
||
| storage.append(new_record) | ||
| storage.sort() |
There was a problem hiding this comment.
Не очень понял необходимость в сортировке
| """ | ||
| # TODO: реализуйте функцию (используйте своё решение части 2) | ||
| return (0, "", Decimal(0), 0) | ||
| record = [x for x in storage if x[PRODUCT_ID_INDEX] == product_id] |
There was a problem hiding this comment.
Можно было бы сделать это без спискового включения. Так можно было бы выйти из функции сразу, как только запись с нужным ID найдена. В текущей реализации придется перебрать все записи хранилища, даже если запись с искомым ID первая
| print(f"product name '{normalized_name}' is already taken") | ||
| return None | ||
|
|
||
| dict_record = { |
There was a problem hiding this comment.
Формирование этого словаря следовало бы унести в функцию dict_to_product. А так логика составления словаря дублируется. Нарушение критерия S1. Минус балл
| dict_record = { | ||
| PRODUCT_ID_INDEX: record[PRODUCT_ID_INDEX], | ||
| NAME_INDEX: normalized_name, | ||
| PRICE_INDEX: normalize_price(fields[1]), |
There was a problem hiding this comment.
Нарушение критерия S3. Минус балл
| for inx, header in enumerate(TABLE_HEADERS) | ||
| } | ||
|
|
||
| def _row(cells: list[str]) -> str: |
There was a problem hiding this comment.
Старайтесь не использовать вложенные функции без крайней необходимости
| return " ".join(x for x in name.strip().lower().split()) | ||
|
|
||
|
|
||
| def get_storage_str_representation(storage: list[Product]) -> str: |
There was a problem hiding this comment.
Функция не соответствует принципу единой ответственности: в ней происходит и определение максимальных значений, и форматирование строк.
Нарушение критерия S2. Минус балл
No description provided.