«Часова». Як вельмі дзіўныя кастылі затрымліваюцца ў кодзе на гады
У Threads разгарнулася цікавая дыскусія: распрацоўшчыкі дзеляцца гісторыямі пра тое, як часовыя рашэнні, часта зробленыя на каленцы і вельмі сумнеўныя, застаюцца ў кодзе надоўга — і чаму іх ніхто не выпраўляе.
А ў вашай практыцы былі такія выпадкі? Дзяліцеся ў каментарыях.
Тэму распачаў 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