Intersystems Cache - Как не загреметь в долговую яму

Preview:

Citation preview

Как не загреметь в долговую яму?

О том, что сделать в самом начале, чтобы не было мучительно больно

через пару лет.

Технический долг

Рефакторинг = погашение основного долга, Поддержка легаси-кода = уплата процентов.

Все как в жизни, господа!

Не пользуйтесь кредитными картами ;)

1) Есть соблазн купить что-то ненужное2) По кредитке - дикие проценты3) Уж если воспользовались – гасите долг сразу!

Нельзя писать такой код, который писать не следует. А если написали – рефакторинг

сразу. Не дайте ему обрасти процентами.

Cache – это объектная среда.

И правила тут такие же, как в любой объектной среде.*

* Следуйте принципам SOLID

Изолируйте данные

• Не позволяйте persistent-классам менять данные, которые они описывают.

• Создайте для хранимых классов абстрактные интерфейсы.

• Управляйте данными только из бизнес-логики, но не наоборот.

Изолируйте Embedded-SQL

П.1. Он порождает связанность кода.

Этого достаточно.

Нужно больше золота!

Создавайте больше абстракций – это:

1) Упорядочивает структуру программы2) Упорядочивает мысли программиста3) Снижает связанность системы

Cache позволяет множественное наследование.

Немного псевдокода

/// Слой бизнес-логикиClass BuyerBusinessLogic { Property buyer As AbstractCustomer; Property goods As %List of AbstractGoods; Method confirmOrder() { For i = 1:1:..goods.Count() { Set sc = ..buyer.Buy(..goods.GetAt(i)) } }}

/// Слой доступа к даннымClass RealCustomer Extends AbstractCustomer { Property customerPersistent As CustomerPersistent; Property customerGoodsPersistent As %List of CustomerGoodsPersistent; Method Buy(goods As AbstractGoods) { Do ..customerGoodsPersistent.Insert(goods) }}

/// Слой абстракцииClass AbstractCustomer [ Abstract ] { Method Buy() {}}

Генерация кода – зло?!

Проблемы:• Затрудняет отладку• Нарушает архитектуруРешения:• Повышает гибкость• Уменьшает количество кода

Используйте только там, где без этого не обойтись.

Модуль = пакет• Выделяйте модули• Создавайте интерфейс доступа к модулю

Этим вы откроете себе дорогу к:• Быстрой замене одного модуля другим• Доступу к функциональности через единый

интерфейс

Рефакторинг архитектуры – слишком дорогое удовольствие. Но он всегда оправдан.*

Спасибо за внимание! ;)

Павлов Денис СергеевичХолдинг «Монастырев и Ко»

Вопросы можно задавать по электропочте:me@futurelink.ru

А кто уже засел в проблемах -

Recommended