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

tcc-case-title
(Sorry, this page has not been translated by the translator you selected.)

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

Банзен сказал: “Я подумал об одном приложении, чей код всё сильнее и сильнее запутывался на протяжении многих лет, благодаря множеству авторов. Я подозреваю, что там скрыто много мусора, который может быть убран”.

Когда Банзен изучил результаты рефакторинга Джишина, он обнаружил, что код стал хорошо организован и значительно упростился. Наиболее резким было сокращение числа классов DTO (объектов передачи данных).

“Я сохранил только те классы, которые напрямую соотносятся с таблицами базы данных”, - гордо пояснил Джишин. - “Глядите, вот запрос, объединяющий таблицы Кампания, Солдат и Специализация, но загружающий только по две колонки из каждой. Раньше тут был DTO, единственной целью которого было вернуть шесть значений для каждой строки - позор! Теперь запрос возвращает список кампаний, каждая из которых содержит список солдат, каждый, в свою очередь, содержит список специализаций. Правда, уровень представления теперь должен получить эти объекты, но они являются общими для всего приложения и будут знакомы всем, кто с ней работает”.

Банзен погладил бороду: “Вы избрали путь ORM (объектно-реляционного отображения) в разработанной Вами самим библиотеке. Я знаком с достоинствами этого подхода, но знаком и с его недостатками. Каждая из этих трёх таблиц имеет около двадцати столбцов; доменные объекты, соответствующие им, имеют тоже по двадцать полей. Так что теперь вместо загрузки шести столбцов на строку, Вы загружаете шестьдесят? Или выполняете запрос в три прохода? Или используете кеширование?”

“Ни один из них”, - с удовлетворением сказал Джишин. - “Я загружаю только оригинальные шесть колонок, плюс основные ключи. Все остальные поля доменных объектов просто не инициализируются”.

Банзен вздохнул и потянулся за посохом.

- - -

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

Длинный шест был воткнут в землю у его ног. Посередине была привязана записка. Джишин развернул её.
Я приказал клану Одного Ботинка убрать весь мусор со свалки Храма. Разве тут сейчас не мило?
К сожалению, на поле осталось много глубоких ям, которые потребуют слишком много усилий, чтобы их засыпать, поэтому мы искусно прикрыли их тончайшим слоем веток и листьев. Поскольку этим вечером ожидается сильный снегопад, я надеюсь, что Вы очнётесь и узрите совершенство.
Смотри под ноги,
Б.