- У самурая нет цели, только путь, а путь самурая - это смерть.
- А я, признаться, думал, что смерть - это конец пути.
- А разве путь и его конец не одно и то же?
Сегодня осознал, что одну важную для системы функциональность я сделал не совсем правильно. Причем переписывал я ее уже 5 раз.
И каждый раз находя новые кейсы, не вписывающиеся в принятый подход.
Как говорится: «здравствуйте, я частный случай, вертел я на ... ваши абстракции».
И каждый раз мне казалось, что сейчас таки все правильно.
И каждый раз я все глубже погружался в проблему.
Переписывание этой части потянет за собой модификацию где-то половины проекта. В такие моменты радуешься за то, что у тебя все типизировано и есть 300 тестов.
Правда, тесты тоже придется модифицировать. Тесты на снепшотах и либо придется просмотреть все 300 глазами и поправить все 300 руками, либо надо будет написать трансформер снепшотов.
Жалею ли я о том, что не продумал варианты еще после первого переписывания?
Нет.
Каждое новое переписывание повышало сложность системы, добавляя новые связи и свойства у структур данных.
Во-первых, я не смог бы засунуть все это себе в голову с первого раза.
Сложность росла «условно линейно»
Во-вторых, сложность зависимых систем тоже повышалась плавно.
Во второй заход я уже знал, что он не будет последним.
И что-то мне подсказывает, что и сейчас это не конец :)
Какие тут плюсы?
На каждом этапе я имею работающий продукт. Да, с багами. Но, как мы знаем, задокументированная бага это фича :)
И тут самое время припомнить мне наезды на пользователей orm :)
Они тоже сначала пишут как-нибудь, а потом когда все становится плохо, пилят запросы руками.
Но, как говорится, есть нюанс :)
В 2002 министр обороны Буша-младшего Рамсфелд на предъявы относительно ненайденного в Ираке оружия массового поражения толкнул такую телегу:
«Есть известные известные — вещи, о которых мы знаем, что знаем их. Есть также известные неизвестные — вещи, о которых мы знаем, что не знаем. Но еще есть неизвестные неизвестные — это вещи, о которых мы не знаем, что не знаем их»
В случае с orm известное известное это то, что будет плохо с архитектурой. Известное неизвестное это то, с каким именно местом в это плохо произойдет :)
А мой путь - это неизвестное неизвестное.
По крайней мере для меня.
И проходя его, я становлюсь лучше.
По крайней мере, мне так кажется...
:)