Many thanks to Tristan Morris for creating a beautiful illustrated hardcover print edition of the site |
|||||||||||||||||
Старый учитель Банзен вызвался присмотреть за кланом Паука во время странствий учителя Суку, но пока месяцы тянулись получаемый опыт портил ему нервы. В одном критически важном приложении компоненты, написанные разными разработчиками, каким-то образом влияли на работу друг друга, что приводило к странным ошибкам времени выполнения. Отчаявшийся Банзен раздобыл у учителя Бавана бутылку жёлтого вина, сразу же ополовинил её и позвал своего ученика Джишина. Неделю спустя Джишин сообщил о своих достижениях: “Наша проблема заключается в контекстах сеанса и запроса Java-сервлета, где мы храним данные о состоянии и отображении. Эти контексты являются хэш-таблицами, в качестве значений которых используются объекты, а в качестве ключей - строки по выбору разработчика. Так как каждый разработчик выбирал ключи, не советуясь со своими коллегами, то компонент иногда может менять значения контекста, используемые другим компонентом. И часто на объект совершенно другого типа”. “И каким будет решение?” - спросил Банзен, откупоривая бутылку. “Я создал общий класс ContextUtil с шестидесятью строковыми константами, по одной для каждого контекстного ключа, используемого в приложении”, - сказал Джишин с гордостью. - “И для каждого ключа я предоставил пару строго типизированных статических методов для получения или установки значения по этому ключу в нужном контексте”. “Похоже на методы свойств”, - заметил Банзен. “Точно!” - сказал Джишин. - “В настоящее время я разрабатываю соглашения по именованию ключей, чтобы каждая подсистема могла иметь свой собственный класс ContextUtil, предоставляющий по мере необходимости дополнительные константы и статические методы”. “Похоже на подклассы”, - заметил Банзен. “Точно!” - снова сказал Джишин. “Прекрасно!” - сказал Банзен, осушая стакан. - “Итак, за семь дней, с помощью простых констант и функций, используемых в стандартной хэш-таблице Java, мы изобрели... класс Object”. Перевод Sergey Malenkov. Отрывок из The Codeless Code, созданная Qi (qi@thecodelesscode.com). При условии, в соответствии с условиями Creative Commons Attribution-NonCommercial 3.0 Unported License. |