Для начала, извините за мой плохой английский.
Недавно я прочитал книгу Егора Бугаенко под названием "Изящные предметы". Одна из тем в этой книге посвящена использованию объектов вместо публичных констант. Автор пишет, что публичные константы - это чистое зло. Есть много причин для этого. Например, использование открытых констант нарушает инкапсуляцию - если мы хотим изменить эту константу, нам нужно знать, как классы нашего пакета используют эту константу. Если два класса в проекте используют эту константу по-своему, нам нужно изменить код этих двух классов, если мы изменим константу.
Автор предполагает, что вместо использования глобальных констант нам нужно создавать объекты, и это позволяет нам изменять код только в одном месте. Я приведу пример ниже.
Я уже читал похожие темы по stackoverflow, но не нашел ответа о передовой практике или вариантах использования. Является ли использование объектов лучше, чем создание глобальной переменной в каком-либо файле, например "settings.py"?
Это
class WWStartDate:
date_as_string = '01.09.1939'
def as_timestamp(self):
# returns date as timestamp
def as_date_time(self):
# returns date as datetime object
лучше, чем это хранится в каком-то файле внутри пакета conf.py, например:
DATE_STRING = '01.09.1939'
если мы говорим об использовании этой даты в нескольких классах нашего пакета?
После прочтения этой книги я решил, что объекты намного лучше, но я вижу много случаев, когда разработчики фреймворка или библиотеки заставляют нас использовать глобальные переменные. Так что не все так просто, как я вижу. Почему, например, django использует этот подход? Я говорю о файле settings.py.