Костыль на костыле: как я больше двадцати лет лечил остатки вместо того, чтобы найти причину

#Костыль #Либо #Первое #Выбор #Проблема
Костыль на костыле: как я больше двадцати лет лечил остатки вместо того, чтобы найти причину

В любой системе, где есть остаток, счётчик или итог, рано или поздно встаёт один и тот же выбор. Либо считать величину заново при каждом обращении к ней, либо хранить готовой и подправлять при каждом изменении исходных данных. Первое медленно и всегда верно, второе быстро и верно ровно до первой пропущенной правки. Выбор этот делают все: складские остатки, счётчики просмотров, баланс лицевого счёта, любые предрассчитанные итоги. Я сделал его в 2002 году, выбрал хранить, и получил вместе со скоростью проблему на двадцать лет вперёд. Проблема выглядела так. Хранимые остатки по счетам время от времени переставали сходиться с операциями, которые их формируют. Иногда на копейки, иногда на миллионы. Я написал утилиту, которая находила такие счета и правила цифры. Потом встроил её в запуск приложения. Потом добавил кнопку в интерфейс, потому что остатки успевали скривиться и среди дня. Костыль на костыле, зато быстро. Причину я нашёл только сейчас, когда сел писать систему заново: в новой арх

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

Я сделал его в 1999 году, выбрал хранить, и получил вместе со скоростью проблему на двадцать+ лет вперёд, но тогда я об этом ещё не знал))).

Проблема выглядела так. Хранимые остатки по счетам время от времени переставали сходиться с операциями, которые их формируют. Иногда на копейки, иногда на миллионы. Я написал утилиту, которая находила такие счета и правила цифры. Потом встроил её в запуск приложения. Потом добавил кнопку в интерфейс, потому что остатки успевали скривиться и среди дня. Костыль на костыле, зато быстро. Причину я нашёл только сейчас, когда сел писать систему заново: в новой архитектуре каждый случай приходится описывать явно и покрывать тестом, и на этом всё и вскрылось.

Причина оказалась не в триггерах и не в производительности. Она в том, что одно бизнес‑правило было записано в коде шесть раз в разных местах, а в седьмом его забыли написать.

Похожие статьи

РИА
РИА

Украинские военные испугались камня и попали в плен в Запорожской области

Военнослужащие ВСУ испугались камня, который российские бойцы кинули в окно под видом гранаты, и сдались в плен, рассказал РИА Новости стрелок группировки войск РИА Новости, 15.08.2026

РИА
Российская газета
Российская газета

Осенью в РФ обновится ГОСТ на карандаши

В России с 1 сентября начнет действовать новый ГОСТ на карандаши. Об этом рассказал член комиссии ОП РФ по общественному контролю Евгений Машаров, пишет ТАСС .

Российская газета
«Цой никогда не состарится»: сын основателя «Кино» — об отце, симфоническом концерте группы и гастролях в Корее RT на русском
RT на русском

«Цой никогда не состарится»: сын основателя «Кино» — об отце, симфоническом концерте группы и гастролях в Корее

Виктор Цой погиб 15 августа 1990 года, но его (да, именно так, ЕГО!) триумфальный концерт в «Лужниках» этим летом очередной раз доказал, что хештег #цойжив не на ровном месте родился. Но, помимо «Кино...

RT на русском
Путин рассказал о сотрудничестве с КНДР РИА
РИА

Путин рассказал о сотрудничестве с КНДР

Президент РФ Владимир Путин в поздравлении лидеру КНДР Ким Чен Ыну с национальным праздником подчеркнул, что Россия и КНДР активно сотрудничают на всех... РИА Новости, 15.08.2026

РИА
Team Yandex спаслась от вылета на TI 2026 — watson не умер ни разу на решающей карте Чемпионат
Чемпионат

Team Yandex спаслась от вылета на TI 2026 — watson не умер ни разу на решающей карте

Team Yandex обыграла Team Resilience со счётом 2:1 в 4-м туре группового этапа The International 2026.

Чемпионат
Grok 4.6 за 48 часов создал 3D-шутер iXBT.com
iXBT.com

Grok 4.6 за 48 часов создал 3D-шутер

Grok 4.6 подтвердил способность самостоятельно создавать сложные программные проекты. Илон Маск обратил внимание на эксперимент Мэтта Шумера, в рамках которого модель непрерывно работала около 48 часо...

iXBT.com