Для работы с константами, которые используются совместно в нескольких пакетах?

Для работы с константами, которые используются совместно в нескольких пакетах?
Для работы с константами, которые используются совместно в нескольких пакетах? - mr_vero @ Unsplash

Помещение всех констант в один пакет — это стратегия, которая в основном работает для небольших проектов и может быть вполне достаточной для вашего случая.

Однако этот подход плохо масштабируется, когда проект растет с течением времени, потому что помещение нескольких констант, не связанных друг с другом, в один пакет создает искусственные зависимости между другими пакетами, что затрудняет индивидуальное управление версиями, индивидуальную разработку на изолированных пакетах и ​​индивидуальное повторное использование.

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

Например, допустим, у вас есть константа для строки подключения к базе данных. Один из вариантов — поместить это прямо в упаковку database.py. Однако, если вы хотите повторно использовать пакет database.py в других проектах с другими строками подключения, это может быть плохой идеей, поэтому вы вводите пакет databaseConfiguration.py, в котором живет константа. database.py будет зависеть не от этого, а от приложений, которые используют эту константу и передают ее значение в какой-либо коннектор базы данных.

Позже вы можете обнаружить, что строка подключения к базе данных используется в нескольких похожих функциях в разных приложениях (но все же недостаточно общего для database.py). Затем вы можете реорганизовать общий код и поместить его также в databaseConfiguration.py.

Ваша следующая группа констант может быть списком специальных чисел из тригонометрии, например Pi/3 или sqrt(2). Вы можете создать пакет JossyMath.py и поместить туда не только константу, но и математические функции, которые делают с константой что-то полезное.

Следующая константа может быть строкой авторского права, которую вы хотите представить в нескольких приложениях. Это может быть часть пакета copyrightInfo.py или generalAppInformation.py, если у вас их несколько.

В конце концов, иногда может остаться несколько констант, которые нелегко отнести к функциональной теме. Когда вы не можете от них избавиться, ни в коем случае не оставляйте их в упаковкеconstants.py. Однако избегайте зависимости от них других повторно используемых модулей, потому что это затрудняет их повторное использование в другом контексте.

Короче говоря, вы должны решать это в каждом конкретном случае, константа за константой, где находится лучшее место, и когда вы делаете это по функциональным темам, вы редко будете получать пакеты «только для констант».

Рекомендую посмотреть эти видео для лучшего погружения в вопрос:

Прикрепленное видео 1 - Введение в метод функционала плотности и его применение для расчёта решёточных свойств

Прикрепленное видео 2 - RF 433 MHz модули SYN115, SYN480R и WL101-341, WL102-341


LetsCodeIt, 26 января 2023 г., 19:34