Many thanks to Tristan Morris for creating a beautiful illustrated hardcover print edition of the site |
|||||||||||||
Ныне пути Йывень и Хвайды пересекаются лишь изредка из-за того, что всё время Йывень занято созданием своеобразного шарфа. Поэтому беспокойная Хвайда стала исследовать те немногие части Храма, о которых она ещё не знала. Скитания привели её к залам аббатства, где обитал клан Горького Дыхания Волка, монахи которого в чёрных одеяниях выполняли всё интеграционное тестирование в Храме. Разработчикам было запрещено появляться в этом месте, хотя никто и никогда не говорил Хвайде почему. Как и все тайны, эта беспокоила её. Она пряталась в тени перегородок и дверей, надеясь узнать некий шокирующий секрет Храма, но всё, что она слышала от монахов в чёрных одеяниях, было громкими шутками на счёт тех разработчиков, чей код содержал ошибки. Большинство этих разработчиков были из клана Паука, клана Хвайды. “Это бесит меня больше всего”, - услышала она жалобу одного из монахов клана Горького Дыхания Волка. - “Я устанавливаю состояние заказа в ‘Неизвестно’, отправляю форму и всё выглядит хорошо. Но когда я возвращаюсь к этой форме, то возникает сообщение о некорректном состоянии заказа. А разработчик клянётся, что ничего не менял на странице!” “Так всегда происходит с кланом Паука”, - вздохнул другой голос. - “Если что-нибудь попадает к ним в руки, то они заворачивают это в восемь слоёв JavaScript, калечат отзывчивость, высасывают всю полезность и заявляют, что этот дёргающийся труп - хорошо выполненная работа”. Их смех преследовал Хвайду, пока она пробиралась к выходу из аббатства. “Я непременно должна с этим разобраться,” - подумала она, сжимая кулаки. Позже Хвайда подошла к учителю Банзену с огнём праведного гнева в глазах и с распечатками в руках. “Эта ошибка была привнесена монахом клана Следа Слона, а не нами. Он переписал метод, преобразующий каждую строку базы данных в объект, и его новый код содержит вот это”... - она постучала пальцем по строке со следующим кодом: order.setStatusCode(rs.getInt(STATUS_CODE)); “А”, - сказал Банзен. - “Я до этого много раз видел такие ошибки. Это свойство имеет тип Integer, чтобы была возможность хранить null. Но в JDBC API метод getInt возвращает примитивный тип int и незаметно преобразует NULL из базы данных в 0, который незаметно преобразуется в объект при вызове метода setStatusCode и возвращается методом getStatusCode при заполнении формы. А поскольку нет такого состояния заказа 0, строка базы данных становится неверной”. “Как будет наказан монах клана Следа Слона?” - спросила Хвайда. “Ничего смертельного”, - сказал Банзен. - “Моё обычное наказание с использованием лодки, которую я держу для такого случая в южном ущелье. Монах вернётся в синяках и мокрым, а в будущем станет изучать API перед использованием более внимательно”. Лицо Хвайды налилось кровью: “А как же честь клана Паука? Из-за этого монахи клана Горького Дыхания Волка открыто издеваются над нами в своём аббатстве!” Тут она замерла, осознав, что проговорилась о своём посещении запретной территории, но Банзен только вздохнул. “Истинная вина лежит на авторах почтенного JDBC API и на каждом инженере сопровождения”, - сказал учитель. - “Они дали монаху удобную лодку с крепкими веслами, уже установленными в уключины. Должны ли мы погубить его только за то, что он не заметил, что левое весло слишком короткое? Нет... Хватит и того, что он вымокнет, когда лодку закрутит на порогах”. Хвайда закусила губу, почтительно поклонилась и повернулась, чтобы уйти. “Моя маленькая монахиня”, - сказал Банзен, подняв указательный палец, чтобы остановить её. - “Это не моя ошибка и я не могу предотвратить проблемы, которые она создаёт. Но я делаю так, чтобы и ошибка, и проблемы послужили великой цели”. На ужине Йывень снова отсутствовала, но Хвайда заметила двух молодых учеников Банзена, сидящих вместе. Джишин и Сато согласились выслушать её жалобы на своего учителя. “Кажется, Банзен решил терпеть эту ошибку до конца времён!” - раздраженно закончила Хвайда. - “Мы должны дать клану Следа Слона лучшую лодку!” “Да ну!” - сказала Сато. - “Когда я узнала об этой ошибке, я предложила учителю переключиться на популярный ORM. Но у рефакторинга свои издержки, а у каждого инструмента свои опасности, поэтому код низкого уровня остаётся”. “Тогда мы должны сделать наше собственное весло!” - сказала Хвайда. “Да ну!” - сказал Джишин. - “Когда я узнал об этой ошибке, я написал подходящий вспомогательный метод getInteger. Но разработчики ищут только то, что как они думают им необходимо, и то, что они знают как искать, поэтому мой метод практически не используется”. Хвайда погрузилась в отчаяние: “Таким образом, монах клана Следа Слона будет слегка наказан, а монах клана Горького Дыхания Волка не будет наказан совсем. По крайней мере, несчастная Хвайда была наказана. И сейчас я понимаю, почему запрещено входить в логово Волка: чтобы поддерживать гармонию между нашими кланами. Жалоба может стать оскорблением, только если она подслушана”. Джишин сказал: “Вы воспринимаете движение вёсел над водой, но Ваш истинный курс определяется тем, что находится внизу”. Сато продолжила: “Наш учитель знает, что Вы нарушили запрет. Но запрет не его и он не может предотвратить его нарушение неудержимым любопытствующим. Таким образом, он делает так, чтобы и указ, и его нарушения послужили великой цели”. Сато положила по-товарищески руку на плечо Хвайда: “Приятного аппетита, сестра клана Паука! Ибо я опасаюсь, что твоё наказание только начинается”... Перевод Sergey Malenkov. Отрывок из The Codeless Code, созданная Qi (qi@thecodelesscode.com). При условии, в соответствии с условиями Creative Commons Attribution-NonCommercial 3.0 Unported License. |