пост @artalar про то Что такое бизнес логика (БЛ) и как ее писать вынуждает меня написать своё мнение по этому поводу.
Моя версия того что такое бизнес логика:
1. Во первых давайте сразу определимся что за "бизнес". В русском языке и в английском языке это слово имеет схожие, но все же разные смыслы.
В русском языке бизнес это то, что приносит прибыль. В английском языке это - дело или занятие. Спрашивая "в чем твой бизнес" - спрашивают о том что зачем ты интересуешся.
Таким образом, бизнес логика это Зачем логика (или "логика дела") - звучит смешно но передает суть. Она отвечает на то, какие цели должны быть достигнуты. С зарабатыванием денег напрямую не связано, у опенсорс и бесплатных проектов тоже есть бизнес логика, потому что они зачем-то существуют. Бизнес логика может быть и на уровне системы, и даже на уровне одного модуля. Например, логгер для приложения не является бизнес логикой, это вспомогательная логика, но на уровне самого логера (когда мы выступаем в роли разрабочтика логгера) там так же есть бизнес логика и вспомогательная логика
2. Как вы уже догадались ответ на вопрос "зачем" будет разным в зависимости от того, кого мы спросим - дизайнера, разработчика, менеджера, пользователя, владельца бизнеса или священика. Когда мы говорим о "бизнес логике" мы всегда подразумеваем какой-то контекст из которого понятно с чьей точки зрения мы ее выделяем.
3. Теперь поговорим о том что такое бизнес логика с точки зрения разработчика. Бизнес логика это то, что вы пытаетесь сохранить при рефакторинге. После рефакторинга могут меняться зависимости, перфоманс, надежность, стэк технологий, стоимость серверов, а бизнес логика остается. Если эта логика может быть выкинута при рефакторинге потому что стала не нужна - это не бизнес логика
4. Почему разработчику важно понимать где тут бизнес логика а где нет - это напрямую влияет на то, насколько удачной будет ваша архитектура. В идеале - изменения в бизнес логике вобще не должны приводить к внесению изменений во всей остальной логике. Ровно как и наоборот - изменения остальной части должны оставлять не тронутой бизнес логику. Это не только сделает его надежнее, и более тестируемым (тестируется как правило именно бизнес логика), это так же позволит вам рефакторить его паралельно с тем, как туда будут вноситься новые функциональные изменения. Идеального разделения на практике не бывает, но это можно использовать в качестве ориентира
@BANOnotIT предлагает использовать "Полезная логика" и "Вспомогательная логика" по аналогии с полезной и паразитной нагрузкой из техники, как вам?
Post #130
837