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

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

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

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

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

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

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

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

пятница, 30 июня 2017 г.

Объектно ориентированное юниттестирование

Возникло неудержимое желание написать статью. :)

Последнее время все мои мысли занимает true oop. Вокруг в этом плане царит уныние. И хуже того. Читая достаточно старые книги, например про Smalltalk, я с грустью наблюдаю объекты, количество методов у которых исчисляется десятками. Это какой-то неправильный ООП.

И возникло у меня желание реализовать фреймворк для юниттестирования, построенный на принципах правильного ООП.

среда, 11 мая 2016 г.

Чем плох мой код?

Сейчас мало пишу, но зато много просматриваю и принимаю. Иногда бывает трудно объяснить, чем плох тот или иной код. Мне кажется что люди не хотят быть понятными, и, как будто, специально усложняют свой код. Я же в свою очередь виду ущербность, но обосновать не могу.

Размышляя об этом осознал два важных момента. Можно сказать - ключевых:
  • Код должен располагаться на месте
  • Код должен быть необходим

вторник, 26 апреля 2016 г.

Булевые входные параметры

Вижу странное рвение параметризовать функции булевыми параметрами. Примеры буду черпать из ядра Linux, ну не из рабочего же кода их брать. :)

void imx6sl_set_wait_clk(bool enter);

Считаю такой подход крайне неинтуитивным. Зачастую по коду, в котором этот метод вызывается, не возможно сказать - что означает false или true. Для того, чтобы это понять - ты должен открыть прототип.

Интуитивная понятность очень важна.

пятница, 8 апреля 2016 г.

Правильный интерфейс...

Есть много всяких принципов и практик. Часто в интерфейсе класса можно учуять множество всяких запахов. Абсолютно правильно наверное не бывает, это всегда компромисс.

Наверное последнее время я достаточно мало пишу кода. Я чуствую, что мне не хватает набитой руки. И вокруг меня как-то мало крутого и правильного кода. И мне кажется, что посади меня сейчас плотно программировать - я бы делал это медленно. Слишком много бы думал. Хотя руководящая нагрузка снялась, кто ж знает что было бы?

Но сейчас про код...