Skip to content

1.Кривчанская Елена Ивановна.614. - #136

Open
Flounderena wants to merge 18 commits into
python-department:mainfrom
Flounderena:task_1_redone
Open

Flounderena wants to merge 18 commits into
python-department:mainfrom
Flounderena:task_1_redone

Conversation

@Flounderena

Copy link
Copy Markdown

No description provided.

@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.

Старайтесь не использовать копипасту, а переиспользовать уже реализованное поведение (функции) и уже рассчитанные значения (константы). Это позволит вам избежать ошибок в будущем.

Итог за тесты: 4.8 / 10
Итоговый штраф: 1
Итог с учетом округления: 4

Comment thread src/part1/constants.py
TIMESTAMP_MS_MAX: Final[int] = 0
NODE_ID_MAX: Final[int] = 0
SEQUENCE_ID_MAX: Final[int] = 0
TIMESTAMP_MS_MAX: Final[int] = 2**41

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.

Дублирование значения. Вы ранее уже определили переменную TIMESTAMP_BITS, которую следовало использовать тут. Теперь, если значение TIMESTAMP_BITS, придется идти и вносить дополнительную правку еще и тут. Это потенциальный источник ошибок при поддержки кода.

Нарушение критерия S1. Штраф - 1 балл

А еще само значение неверно рассчитано. TIMESTAMP_MS_MAX должен занимать TIMESTAMP_BITS битов. Значение 2 ** 41 занимает 42 бита, т.е. на один больше, чем требуется. Аналогично с другими максимальными значениями

Comment thread src/part1/snowflake.py
"""
# TODO: реализуйте функцию
return 0
return int(time.time() * 1000) - epoch_ms - EPOCH_MS_DEFAULT

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.

Это ошибка. Вычитание EPOCH_MS_DEFAULT - лишнее действие.

Comment thread src/part1/snowflake.py
# TODO: реализуйте функцию
return 0
creation_time = (snowflake_id >> SEQUENCE_ID_BITS >> NODE_ID_BITS) & (
(1 << TIMESTAMP_BITS) - 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.

Это перерасчет значения TIMESTAMP_BITS. Т.е. копипаста

Comment thread src/part1/snowflake.py
"""
# TODO: реализуйте функцию
return 0
return (snowflake_id >> SEQUENCE_ID_BITS) & ((1 << NODE_ID_BITS) - 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.

Comment thread src/part1/snowflake.py
print(f"sequence_id must be in [0, {SEQUENCE_ID_MAX}], but it is {sequence_id}")
return None

epoch_ms = int(time.time() * 1000) - EPOCH_MS_DEFAULT

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.

Здесь следовало вызывать функцию для расчета timestamp. Еще вы вы никак не используете значение epoch_ms, переданное в функцию, а вычитаете только EPOCH_MS_DEFAULT. Т.е. пользователь лишен возможности настраивать значение начала эпохи отсчета. Из-за этого часть тестов падают.

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