Upload
denis-pavlov
View
208
Download
4
Embed Size (px)
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() {}}
Генерация кода – зло?!
Проблемы:• Затрудняет отладку• Нарушает архитектуруРешения:• Повышает гибкость• Уменьшает количество кода
Используйте только там, где без этого не обойтись.
Модуль = пакет• Выделяйте модули• Создавайте интерфейс доступа к модулю
Этим вы откроете себе дорогу к:• Быстрой замене одного модуля другим• Доступу к функциональности через единый
интерфейс
Рефакторинг архитектуры – слишком дорогое удовольствие. Но он всегда оправдан.*
Спасибо за внимание! ;)
Павлов Денис СергеевичХолдинг «Монастырев и Ко»
Вопросы можно задавать по электропочте:[email protected]
А кто уже засел в проблемах -