• Singleton — паттерн или антипаттерн?
    +8
    Ну и да, Синглтон имеет кучу недостатков:

    1. Синглтон нарушает SRP (Single Responsibility Principle) — класс синглтона, помимо того чтобы выполнять свои непосредственные обязанности, занимается еще и контролированием количества своих экземпляров.
    2. Зависимость обычного класса от синглтона не видна в публичном контракте класса. Так как обычно экземпляр синглтона не передается в параметрах метода, а получается напрямую, через getInstance(), то для выявления зависимости класса от синглтона надо залезть в тело каждого метода — просто просмотреть публичный контракт объекта недостаточно. Как следствие: сложность рефакторинга при последующей замене синглтона на объект, содержащий несколько экземпляров.
    3. Глобальное состояние. Про вред глобальных переменных вроде бы уже все знают, но тут та же самая проблема. Когда мы получаем доступ к экземпляру класса, мы не знаем текущее состояние этого класса, и кто и когда его менял, и это состояние может быть вовсе не таким, как ожидается. Иными словами, корректность работы с синглтоном зависит от порядка обращений к нему, что вызывает неявную зависимость подсистем друг от друга и, как следствие, серьезно усложняет разработку.
    4. Наличие синглтона понижает тестируемость приложения в целом и классов, которые используют синглтон, в частности. Во-первых, вместо синглтона нельзя подпихнуть Mock-объект, а во-вторых, если синглтон имеет интерфейс для изменения своего состояния, то тесты начинают зависеть друг от друга.
  • Простые методы продуктивности для фрилансера
    +7
    Я фрилансер со стажем лет в 6-7 и хотел бы сказать, что весь этот микроменеджмент вроде «пейте кофе», «занимайтесь спортом» может работать… может работать недолго, а может вообще не работать. Я бы посоветовал очень простую концепцию, которая содержится в самом слове «фрилансер», с тех пор, как его впервые использовал Вальтер Скотт:
    1. Будьте «фри», свободным. Занимайтесь любимым делом, которым до сих пор не могли заняться. Это может быть спорт, может быть фотография, рисование, пение, трейсинг, танцы, рыбалка, да что угодно, что делает вас счастливым. Мне, например, сносит башню от фрезерных станков :) Еще раз повторюсь. Важно, чтобы оно делало вас счастливым. Получайте удовольствие от жизни, даже в тех мелочах, которые до сего дня казались обыденными. ГТД: Просто выделите в течения дня время для занятия любимыми делами и никогда, подчеркиваю, _никогда_ не жертвуйте этим временем, потому что не успеваете что-то по работе. Считайте, что этого времени просто нет.
    2. Будьте «лансером», воином. С момента выхода в свободное плавание над вами уже не будет офицеров и не с кем разделить ответственность. Вы уже не боец регулярной армии, вы наёмник. Если вас «убьют», то семья не получит пенсии по потери кормильца. Вам нужно воспитывать в себе профессиональную силу, мужество и отвагу. ГТД: Как только внутри появляется червячок, который советует где-то закрыть глаза на недочеты в ваших продуктах или услугах, сделать попроще, но похуже и т.п., то поступайте с точностью наоборот.

  • UFO just landed and posted this here