четверг, 3 апреля 2014 г.

Задне-обратная совместимость

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

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

"Я убедился, что существующие модульные тесты прошли", - запротестовал младший монах. - "Отвергается null и принимаются все правильные шестнадцатеричные цифры".

Вангохан нахмурился: "Я Вам говорю, что картонная коробка не подходит для еды дочери Императора, а Вы мне отвечаете, что коза ей не подавится".



Вангохан вызвал старшего монаха, который отвечал за общую библиотеку и объяснил проблему.

"Мы не можем изменить реализацию", - сказал старший монах. - "В настоящее время этот метод используется во всём Храме. Если он вдруг станет отвергать ранее принятые строки, то может произойти катастрофа".

Вангохан ударил кулаком по столу монаха: "Я Вам говорю, что картонная коробка не подходит для еды дочери Императора, а Вы мне отвечаете, что ей может не понравиться вкус баранины и инжира".



Вангохан вызвал главного настоятеля клана Смеющейся Обезьяны и объяснил проблему.

"Я приму участие в этом обсуждении", - вздохнул настоятель. - "Должно же быть решение, удовлетворяющее все стороны".

В тот вечер Вангохан получил письмо от настоятеля, в котором утверждалось, что теперь метод должен работать точно как ожидается. Вангохан просмотрел код и обнаружил, что метод совсем не изменился, за исключением комментария сверху:
 /**
  * isHexNumber возвращает true для любой строки,
  * в любом месте которой присутствуют
  * ноль или более шестнадцатеричных цифр.
  */
Вангохан уронил голову на стол: "Очевидно, картонная коробка должна подходить для еды дочери Императора, ибо она присутсвует в Императорском меню".

Original: Ass-Backwards Compatibility

Комментариев нет:

Отправить комментарий