Всем привет!
В целях улучшения читаемости кода часто изобретаю всякие велосипеды. В свой практике (и из умных книг) выработал стиль написания самодокументирующегося кода. Сейчас вот хочу добавить не только читаемость кода по отдельности, но и добавить читаемость бизнес логики. Для этого я бы хотел скрестить комментарии и логгирование. Как-то вот так:
...
public function executeSomeBusinessProcess() {
$this->logger('Start executing some business process');
$this->logger('Create something in database');
$someData = $this->_buildSomeData();
$this->someRepository->add($someData);
$this->logger('Send some events');
$this->events->sendSomeEvents($someData);
$this->logger('End of some business process');
}
...
В примере написано что-то очевидное,но если бизнес логика будет специфичная, то такие "комментарии" могут стать уместными. Кроме того можно будет анализировать логи всех процессов и понять что в какой последовательности вызывается. Что-то типа:
1. Presenter. Начали обработку http
2. Presenter. Собрали модель пользователя из http запроса
3. Business. Начали процесс регистрации пользователя
4. Business. Отправляем запрос в БД на создание пользователя
5. Database. Создаём новое поле в таблице Users
6. Business. Отправляем email новому пользователю
7. Mail. Отправка письма на почту user@example.com
8. Business. Завершаем создание пользователя
9. Presenter. Завершаем HTTP запрос.
При этом в фильтре логов можно бы было оставить только Business и проанализировать как работает тот или иной процесс.
Так же в сам лог можно передавать какие-то данные связанные с сообщением лога и проводить внутри assert тестирование.
В итоге можно получить живые комментарии , которые формируют сценарии бизнес процессов, а так же возможно являются инструментом для assert тестирования. Обычно в логи попадают не только комментарии, сколько какие-то значения. Меня же интересует формирование сценариев и способ сделать код более читаемым.
Что думаете по этому поводу ? Сильно загнул ?