четверг, 11 июля 2013 г.

Мыслить инъекциями

Когда я учил ассемблер, то и во сне и наяву пересылал числа из регистра в регистр. Когда начал заниматься базами данных, то, глядя на любые предметы, видел их в виде таблиц и внешних ключей, а во время шоппинга мысленно писал SQL-запрос вроде: "SELECT Кеды FROM Барабашово WHERE Size = X AND Price < Y". Впервые столкнувшись с enterprise service bus,  некоторое чувствовал, как части моего мозга асинхронно шлют друг другу сообщения. Ну, и так далее, вы поняли.

Думаю, что тут нет ничего из ряда вон выходящего, и похожие ощущения знакомы многим. Сталкиваясь с совершенно новым типом задач, мозг некоторое время изо всех сил перестраивает нейронные цепи. Потом всё утрясается, и человек начинает спокойно решать такие задачи без больших усилий. В случае с базами данных для этого явления есть меткое выражение "человек, мыслящий в третьей нормальной форме".

Пару месяцев назад снова испытал это уже подзабытое ощущение, когда делал рефакторинг под Ninject. Нет, конечно, я и раньше был знаком с IoC frameworks, но, честно говоря, считал, что их полезность слегка преувеличена, и что зачастую слишком уж много plumbing приходится делать. Поэтому частенько в своих проектах ограничивался  poor man dependency injection.

Но тут как раз случай, где польза очевидна: система состоит из динамически загружаемых плагинов, а те ещё динамически загружают свои  "под-плагины"; причем многие из них используют одни и те же сервисы. В плане у меня на рефакторинг было выделено два дня, а на деле ушло аж две недели. Уже сам был не рад, что взялся. И не то, чтобы Ninject так уж сложен - нет, это прекрасный, гибкий продукт с кучей плагинов и неплохой документаций. Нет, просто проект уж слишком накрученный. Главное, ругать некого - предыдущую версию писал тоже я :)

Так вот, к концу второй недели, находясь в некой прострации, я начал "мыслить инъекциями". Ну, например, мне казалось, что как только я протяну руку, то в ней окажется чашка с горячим чаем или там пульт управления телевизором. Протягиваешь - и разочарование: пульта нет, надо искать. Единственные "инъекции", которые действительно работали в физическом мире - это коты. Просыпаюсь ночью, переворачиваюсь на другой бок и думаю, что надо погладить какого-нибудь кота. И действительно - тут же один из троих котов запрыгивает на кровать и начинает ластиться :)

1 комментарий:

KEHT комментирует...

Когда у меня такое случается, я ухожу в отпуск. Это не есть здорово. :)

Ratings by outbrain