среда, 29 ноября 2017 г.

Ленивы ли ваши объекты?

Конструкторы не должны содержать кода. Так думает Егор Бугаенко, и я с ним согласен. И у меня возникли некоторые соображения по этому поводу.

Для начала представляю вам объект:

class HardCalculationValue:
    def __init__(self):
        # Точка 1
        pass

    def value(self):
        # Точка 2
        return None

Этот объект - абстракция. Он может делать тяжелые операции разной природы. Работа с внешними ресурсами, как-то БД, файлы, сеть. Какие-то тяжелые преобразования. Конечно это могут быть и не очень тяжелые преобразования, но на тяжелых преобразованиях сильнее чувствуется боль. :)

И нам нужно вставить тяжелую операцию. Какую точку вы выберите 1 или 2?
Почему-то вспомнилось: ... я покажу тебе, как глубоко ведет кроличья нора. :)