«Часова». Як вельмі дзіўныя кастылі затрымліваюцца ў кодзе на гады

У Threads разгарнулася цікавая дыскусія: распрацоўшчыкі дзеляцца гісторыямі пра тое, як часовыя рашэнні, часта зробленыя на каленцы і вельмі сумнеўныя, застаюцца ў кодзе надоўга — і чаму іх ніхто не выпраўляе.

А ў вашай практыцы былі такія выпадкі? Дзяліцеся ў каментарыях.

4 каментарыя

Тэму распачаў PHP/Python-распрацоўшчык. Ён распавёў, як нядаўна разбіраўся з крытычным багам у праекце з 10-гадовым кодам. Праз 4 дні ён нарэшце знайшоў праблему: хтосьці з распрацоўшчыкаў прыбраў з сістэмы праверку плацежных карт з паметкай «Часова, потым вярну» — і, натуральна, не вярнуў. Коміт гэтага распрацоўшчыка быў датаваны 2018 годам.

— Сем чортавых гадоў кампанія прымала любыя карткі без праверкі! Нават неіснуючыя. І ніхто гэтага не заўважаў… — абураецца топікстартар.

За гэты час у кампаніі змяніліся 3 распрацоўшчыкі, але ніхто так нічога і не зрабіў з гэтым «Часова, потым вярну».

«Ніхто не возьме на сябе рызыку выпраўляць па прынцыпе: «Не чапай, калі працуе!»

Пад пастом — «100% разумення» і ніякага асуджэння. Хтосьці піша, што «такое ўвесь час сустракаецца ў легасі, але паколькі ўжо змянілася 10 пакаленняў айцішнікаў, ніхто не хоча браць на сябе рызыку і выпраўляць відавочныя багі па прынцыпе: „Не чапай, калі працуе!“».

Другі каментатар прыводзіць прыклад: «Я ў фінансах. Рэгулярна знаходжу ў сістэме плацяжы, пастаўленыя на холд у годзе гэтак 2020».

— Калі быў аўтаматызатарам, бачыў паведамленне «ё***ным індусам, калі хопіць мазгоў дапілаваць маю фічу». Распрацоўшчык рабіў нейкі функцыянал для смарт-сістэм дамоў, а праект павінен быў перайсці да індусаў».

Адзін з каментарыяў — ад чалавека, які прадставіўся супрацоўнікам кампаніі па падтрымцы і аптымізацыі legacy codebases. Ён склаў топ-3 сваіх найулюбёнейшых «часовых» рашэнняў, што сталі пастаяннымі:

  • часовы while (true) у некаторых месцах для тэставання — і гэта працавала 10 гадоў разам з асноўным кодам;
  • выгрузка  з базы дадзеных у адзін радок даўжынёй каля 1000 з каментарыем: «Выправіць, калі будзе сапраўдная база дадзеных». Базу потым проста падагналі пад гэты радок;
  • зашыты лагін admin і пароль 12345 з todo-камментам. Кампанія была ўпэўненая, што трэба будзе дадаць логін, і гэтая таска правісела ў backlog’у 2 гады.

І канечне ж, там шмат пацешных гісторый ад карыстальнікаў. Вось некалькіх з іх:

«А ў пачатку бязладдзя — мой жа каментарый: «часовае рашэнне»

— У далёкім 2007 годзе мне трэба было тэрмінова запусціць новую інфармацыйную сістэму. На навагодніх вакацыях я налабаў жудасны «гаўнакод» для выгрузкі дадзеных з гэтай сістэмы. Код быў сапраўды жудасны: замест стварэння і запуску дынамічнага SQL па параметрах у UNION’ах былі пералічаныя ўсе магчымыя на той момант варыянты выгрузкі дадзеных — і без аніякай аптымізацыі… Я хацеў выправіць код праз пару месяцаў пасля запуску сістэмы…

…Я ўжо даўно перайшоў у іншае прадпрыемства холдынгу і нават змяніў сферу дзейнасці. І вось у мінулым 2024 годзе былыя калегі паведамілі, што, нарэшце, гэтую састарэлую сістэму знеслі і замянілі новай. Я спытаў: «А што, тая выгрузка дадзеных так і прапрацавала ўвесь час?!.» Мне паказалі мой жа код з «клапатліва» дапісанымі UNION’амі… А ў самым пачатку гэтага бязладдзя ганарліва стаяў мой уласны каментарый, датаваны 03.01.2007 года: «часовае рашэнне».

«Праз 8 гадоў патэлефанавалі з мінулай працы і папрасілі аднавіць скрыпт»

— У 2007 годзе я, яшчэ студэнт пятага курса, працаваў у вялікай фармацэўтычнай кампаніі. Аднойчы мяне папрасілі напісаць невялікі скрыпт для выгрузкі дадзеных з 1С па запыце праз сайт.

Я зляпіў яго на каленцы і аддаў працаўнікам складу на тэставанне. Тэст, мабыць, ён прайшоў адразу, бо ніхто мяне не прасіў нешта дапісаць ці выправіць. Праз пару гадоў я звольніўся, з’ехаў за мяжу. А ў 2015 годзе мне патэлефанавалі з мінулай працы і папрасілі аднавіць гэты скрыпт. Выявілася, што ён быў вельмі важны, і ўся сетка з сотняў фармацэўтаў і правізараў ім карысталася. А я нават не ведаў, што стварыў супер-зручны інструмент для аптэк.

«Прыкладна гады два гэтым усім карысталіся аналітыкі і лаяліся»

— Калі я была маленькай дзяўчынкай-стажорам, мне далі задачу, разабрацца, як працуюць базы дадзеных (з нуля, па кнізе Microsoft Access для чайнікаў) і з нуля ж зрабіць базу, якая звярталася б да сайту са статыстыкай і выгружала дадзеныя ў Excel для некалькіх вельмі важных справаздач.

Паколькі я рабіла гэта ўпершыню ў жыцці, а на праект быў усяго месяц, шмат прыходзілася рабіць праз пякельныя кастылі. Але прыкладна гады два гэтым усім, лаючыся, карысталіся аналітыкі.


Читать на dev.by