Repository navigation
1. Банад Михаил Вячеславович. 614 - #66
phantom686 wants to merge 13 commits into
Conversation
EvgrafovMichail
left a comment
There was a problem hiding this comment.
Баллов за оформление не снижаю. Т.к. часть тестов не пройдено итоговая оценка за ДЗ - 7/10
|
|
||
| # Здесь можно добавить собственные вспомогательные константы | ||
| # (например, сдвиги полей при сборке идентификатора). | ||
| EPOCH_MS_DEFAULT: int = 1288834974657 |
There was a problem hiding this comment.
А зачем удалили typing.Final из аннотаций?
| """ | ||
| # TODO: реализуйте функцию | ||
| return 0 | ||
| return int(int(time.time() * 1000) - epoch_ms) |
There was a problem hiding this comment.
Лишний int. Такого было бы вполне достаточно:
| return int(int(time.time() * 1000) - epoch_ms) | |
| return int(time.time() * 1000) - epoch_ms |
| """ | ||
| # TODO: реализуйте функцию | ||
| return 0 | ||
| return int(snowflake_id // (2**TIMESTAMP_SHIFT) + epoch_ms) |
There was a problem hiding this comment.
Можно было бы реализовать это через битовые операции. Тогда не пришлось бы вызывать int для сохранения корректных аннотаций типов
| return 0 | ||
| def decode_node_id(snowflake_id: int, epoch_ms: int = EPOCH_MS_DEFAULT) -> int: | ||
| return int( | ||
| ( |
There was a problem hiding this comment.
Очень длинная операция, на что указывает ее разбиение на несколько физических строк. Такой код тяжело читать и понимать. Лучше разбить его на несколько простых операций, записанных последовательно на разных физических строках.
Так код читался бы легче:
timestamp_shift_from_epoch = decode_timestamp_ms(snowflake_id, epoch_ms) - epoch_ms
id_without_timestamp = snowflake_id - (timestamp_shift_from_epoch * 2 ** TIMESTAMP_SHIFT)
node_id = id_without_timestamp // (2 ** NODE_ID_SHIFT)А так, реализация через битовые операции была бы гораздо проще и лаконичнее
| """ | ||
| # TODO: реализуйте функцию | ||
| return 0 | ||
| return int(snowflake_id - ((snowflake_id // 2**NODE_ID_SHIFT) * (2**NODE_ID_SHIFT))) |
There was a problem hiding this comment.
Аналогично. Реализация через битовые операции была бы гораздо проще и не требовала бы вызова int.
| sequence_id: int, | ||
| node_id: int = NODE_ID_DEFAULT, | ||
| epoch_ms: int = EPOCH_MS_DEFAULT, | ||
| sequence_id: int, node_id: int = NODE_ID_DEFAULT, epoch_ms: int = EPOCH_MS_DEFAULT |
There was a problem hiding this comment.
Зачем изменили группировку параметров и переписали все на одной строке? Так сложнее читать код
| return 0 | ||
| current_millis = read_current_millis(epoch_ms) | ||
| if current_millis < 0 or current_millis > TIMESTAMP_MS_MAX: | ||
| raise ValueError("Превышен максимальный лимит времени") |
There was a problem hiding this comment.
raise - это очень хорошо. Но в условии задания требовался именно вывод сообщения в stdout с помощью print. Из-за этого часть тестов не пройдена.
No description provided.