Many thanks to Tristan Morris for creating a beautiful illustrated hardcover print edition of the site

tcc-case-title

Один монах, известный элегантностью своего кода, имел привычку переделывать код своих товарищей, чтобы тот соответствовал. “Умножающаяся несогласованность становится хаосом”, - объяснял он, - “хаос порождает сложность, сложность приводит к путанице, а путаница - мать десяти тысяч изъянов”.

Об этом прослышала учитель Суку, которая ценит чистоту кода превыше всего. Она подошла к монаху, сказав: “Мне нужна Ваша помощь в исправлении проблемы”.

Суку показала монаху большой репозиторий, хранилище исходного кода древнейшего приложения Храма. За прошедшие десятилетия неисчислимый поток монахов и монахинь прошёл через его священные каталоги: добавляя, удаляя, перерабатывая, уточняя, пробуя новый фреймворк здесь, а новый подход там. Несколько раз весь основной код мигрировал с одного языка программирования на другой, на глубоких уровнях оставляя следы непостижимо причудливых шаблонов проектирования. В одном только вспомогательном классе соглашения по именованию были настолько дико противоречивыми, что у монаха закружилась голова и ему пришлось лечь на пол.

“Наведите порядок в этом хаосе”, - сказала Суку и вышла.

Монах всерьёз приступил к переписыванию приложения в стиле, который он совершенствовал столько лет. Он выбрал новый блестящий фреймворк на замену множества заржавевших старых, затем выбрал один пыльный уголок репозитория и стал работать, медленно расширяясь: добавляя, удаляя, перерабатывая, уточняя.

- - -

Монах переработал только малую часть файлов, когда раздался стук в дверь.

“Срочно!” - сказал снаружи запыхавшийся настоятель, хватая монаха за одежду и вытаскивая его за дверь. “Беда! Беспорядок! Время вышло! Мы обречены! Не хватает людей и не хватает времени, Вы нужны прямо сейчас! Пошли, Пошли!”

Монах возражал, призывая кого-нибудь позвать учителя Суку, чтобы та вмешалась, но настоятель просто закинул монаха на спину и потащил по коридору, как шумящий мешок риса.

Тем же вечером Суку обнаружила монаха привязанным крепкими верёвками к его новой рабочей станции.

“Я видела ваши изменения в большом репозитории”, - сказала учитель, вытащив длинный нож и приставив к его горлу. - “Там, где раньше была сотня стилей, сейчас сто один”.

Она сделала быстрое движение. Монах съёжился, ожидая, что его кровь прольётся на одежду. Вместо этого нож разрезал только одну из связывающих его верёвок.

“Не идеально, но всё же лучше”, - сказала Суку и вышла.

Она делала то же самое в течение сотни вечеров, пока не освободила монаха.

- - -

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

“Правда рефакторинга ещё и в том”, - говорит он теперь, - “что иногда приходится вводить хаос для наведения порядка, подобно тому, как дорога к морю иногда должна идти в гору, прежде чем она начнёт снова спускать вниз. Однако, порядок - не цель: просто надо идти от сложного к простому, от более к менее. Учитель попросила меня уменьшить беспорядок, но я думал только об одном и выбрал путь, достойный наказания, хотя хватило бы простого вычитания”.