Является ли добавление функций в пространство имен/модуль после импорта антипаттерном?

Является ли добавление функций в пространство имен/модуль после импорта антипаттерном?
Является ли добавление функций в пространство имен/модуль после импорта антипаттерном? - reka_illyes91 @ Unsplash

Эта техника известна как monkey patching , см. также Wikipedia. Обезьянье исправление может также означать другие формы применения исправлений к существующим классам во время выполнения, добавление собственных функций в модуль - это лишь один из случаев использования этой техники.

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

В C#, например, существует механизм под названием "методы расширения", который обеспечивает языковую поддержку именно такого сценария. Однако, в отличие от Python, столкновение имен автоматически приведет к ошибке при компиляции. В Python это может привести к негласной ошибке, поэтому будьте внимательны при выборе имен.

Прикрепляю к посту несколько видео по теме:

Прикрепленное видео 1 - Java Professional. Урок 5. Рефакторинг. Типичные архитектурные решения и антипаттерны

Прикрепленное видео 2 - 💻 Метапрограммирование и мультипарадигменное программирование с примерами на JavaScript и Node.js

Прикрепленное видео 3 - Клуб технических практик 10.03.2022 Жил на свете добрый Jooq – как подружиться с РСУБД


LetsCodeIt, 7 февраля 2023 г., 00:39