The Daily WTF на русском
Подписаться
Одна ипотека
Джон вспомнил историю из своего прошлого опыта работы в банке, где они разработали клиентское приложение, чтобы помочь агентам по продажам рассчитывать платежи по ипотеке и отображать графики клиентам. Приложение было успешным, но позже агенты запросили мобильную веб-версию, которую они могли бы использовать на своих телефонах. Первоначальной мыслью было подключить его к основному серверу, но из-за нехватки разработчиков для сервера они решили обернуть объекты расчета ипотеки в веб-сервис вместо этого. Веб-сервис был протестирован и работал хорошо, но иногда он производил абсурдные результаты, которые были трудны для воспроизведения и диагностики. В конечном итоге проблема была найдена и оказалась вызвана объектом-одиночкой, который не был привязан к одному запросу, что позволяло одновременным запросам мешать друг другу. Объект-одиночка был остатком от исходного клиентского приложения, где не было необходимости обеспечивать уникальность. Калькулятор хранил состояние и, вероятно, не должен был быть одиночкой с самого начала. Исправление было простым: перестать использовать шаблон одиночки и обеспечить, чтобы каждый запрос получал свой собственный экземпляр калькулятора. Этот опыт служит примером неправильного применения шаблонов, подчеркивая важность тщательного рассмотрения при применении шаблонов проектирования к разработке программного обеспечения. История демонстрирует, как казалось бы простая проблема может иметь сложную причину, и как тщательный обзор кода и дизайна может привести к простому решению.