Полезные практики от опытных разработчиков
Contents
Полезные практики от опытных разработчиков#
Переопределение checkWorkAbility()#
В checkWorkAbility
нельзя использовать:
thisRop()
, заместо этого лучше использоватьgetVar/getSelfVar
обходчики, особенно с инвалидацией в БД (запросом на согласование данных в БД) (например,
refreshByParent()
).
Нужно понимать, что checkWorkAbility
вызывается часто, поэтому его оптимизация сильно сказывается на времени работы бизнес-логики.
session.flush() заместо session.commit()#
session.commit()
лучше избегать и использовать session.flush()
.
commit()
выгружает данные из кэша в БД.
flush()
применяет изменения сессии к БД.
В случае использования flush()
данные ещё не в БД и есть возможность откатить изменения, например, в случае ошибки.
commit()
вызывает afterEdit()
с проверкой обязательных полей в отличии от flush()
.
Избегать использование [Option].get и [Collection].head#
Не использовать для:
Option
.get
, если внутри былNone
, то выпадет исключение.Использовать
.getOrElse(<значение или исключение, в случае None>)
.коллекций .head без проверки на пустоту коллекции.
лучше использовать
.headOption
, что вернёт результат в конструкцииOption
, который дальше распаковать через.getOrElse()
.
Миксин Btk_Object#
миксин Btk_Object хранит все записи классов супер-типа документ и справочник.
В него нельзя вносить изменения! Это системный миксин.