paint-brush
Code Smell 282 - Վատ լռելյայն և ինչպես շտկել դրանքկողմից@mcsee
679 ընթերցումներ
679 ընթերցումներ

Code Smell 282 - Վատ լռելյայն և ինչպես շտկել դրանք

կողմից Maximiliano Contieri4m2024/12/02
Read on Terminal Reader

Չափազանց երկար; Կարդալ

Անհայտ պատասխանները վերաբերվեք որպես չարտոնված, ոչ վավերական:
featured image - Code Smell 282 - Վատ լռելյայն և ինչպես շտկել դրանք
Maximiliano Contieri HackerNoon profile picture

Կանխադրվածները կարող են ձեզ խորտակել

TL;DR. Անհայտ պատասխանները վերաբերվեք որպես չարտոնված, ոչ վավերական:

Խնդիրներ

  • Անվտանգության ռիսկեր
  • Անտեսելով անհայտ դեպքերը
  • Սխալ Սխալ մեկնաբանում
  • Կանխադրված է վավեր պետություններին
  • Թույլտվությունների անհամապատասխանություն
  • Չհաջողվեց գրանցել իրադարձությունները
  • Շահագործման ներուժ

Լուծումներ

  1. Վավերացրեք բոլոր պատասխանները հայտնի կոդերի փակ փաթեթի նկատմամբ:
  2. Կանխադրված (և անհայտ) մինչև չլիազորված կամ Հեռացնել կանխադրվածները :
  3. Գրանցեք յուրաքանչյուր անհամապատասխան կամ անսպասելի դեպք վերլուծության համար:
  4. Փորձարկում եզրային սցենարներով:
  5. Պարբերաբար համաժամացրեք արձագանքման լողավազանները պրոցեսորների հետ՝ հնացած կոդերից խուսափելու համար:
  6. Կենտրոնացեք անվտանգության վրա՝ այն դարձնելով ձախից անցումային գործընթաց:
  7. Նախագծեք փոփոխությունների դիմացկուն համակարգեր՝ զարգացող սցենարները կարգավորելու համար:

Համատեքստ

Այսօր համակարգչային անվտանգության օրն է, և յուրաքանչյուր ծրագրավորող պետք է գիտակցի իր պատասխանատվությունը:


Պատկերացրեք մի հավելված, որը զբաղվում է վաճառքներով, որը հիմնված է վարկային քարտերի պրոցեսորների պատասխանների վրա՝ գործարքները կարգավորելու համար:


Յուրաքանչյուր կրեդիտ քարտի պրոցեսոր տրամադրում է նախապես սահմանված պատասխանի կոդեր տարբեր իրավիճակների համար, ինչպիսիք են անբավարար մնացորդը կամ ժամկետանց քարտերը:


Խնդիրը սկսվում է այն ժամանակ, երբ պրոցեսորն ավելացնում է պատասխանի նոր կոդ՝ մերժված գործարքների համար, բայց չի ծանուցում հարթակին:


Հավելվածը չի ճանաչում նոր կոդը, կանխադրված է համարում այն որպես «չգտնված» և թույլատրում է գնումը:


Օգտատերերը նկատում են այս թերությունը և օգտագործում այն չարտոնված գնումներ կատարելու համար:


Պլատֆորմի եկամուտները կտրուկ նվազում են, ինչը հանգեցնում է սնանկացման:

Նմուշ կոդ

Սխալ

 String response = paymentProcessor.authorize(cardDetails); switch (response) { case "DECLINED_INSUFFICIENT_FUNDS": // Handle insufficient funds break; case "DECLINED_EXPIRED_CARD": // Handle expired card break; default: // Authorize purchase break; }

Ճիշտ է

 String response = paymentProcessor.authorize(cardDetails); switch (response) { case "APPROVED": // Authorize purchase break; case "DECLINED_INSUFFICIENT_FUNDS": // Handle insufficient funds break; case "DECLINED_EXPIRED_CARD": // Handle expired card break; case "DECLINED_NEW_REASON": // Handle new declined reason break; default: // Reject purchase (default case for unknown responses) break; }

Հայտնաբերում

  • [x] Ձեռնարկ

Դուք կարող եք հայտնաբերել այս հոտը՝ վերանայելով սխալների հետ աշխատելու տրամաբանությունը:


Ստուգեք, արդյոք համակարգը գրանցում և հերքում է չճանաչված դեպքերը:


Ավտոմատացված թեստերը կարող են օգնել պարզել, թե արդյոք նոր կամ անսպասելի մուտքերը լռելյայն են վավեր գործողությունների համար:


Ստատիկ վերլուծության գործիքները կարող են օգնել՝ նշելով սխալների հնարավոր թերի մշակումը:

Պիտակներ

  • Անվտանգություն

Մակարդակ

  • [x] Միջանկյալ

Ինչու է Bijection-ը կարևոր

Կարևոր է պահպանել վճարային պրոցեսորի պատասխանների ձեր դիմումի ներքին ներկայացման և պրոցեսորի կողմից վերադարձված փաստացի կոդերի միջև մեկ առ մեկ համապատասխանություն:


Երբ դուք խախտում եք բիեկցիան , դուք անհամապատասխանություն եք ստեղծում:


Հավելվածը սխալ է մեկնաբանում անհայտ կոդերը՝ հանգեցնելով անսպասելի վարքագծի, անվտանգության անցքերի և բիզնեսի հնարավոր աղետալի հետևանքների:

AI սերունդ

AI գործիքները կարող են ստեղծել այս հոտը, եթե չնշեք, թե ինչպես վարվել անհայտ դեպքերի հետ:


Օրինակ, ընդհանուր սխալների մշակումը կարող է կանխադրված լինել բարենպաստ արդյունքների համար, ինչպիսիք են «չի գտնվել» կամ «հաջողությունը»:

AI հայտնաբերում

AI գեներատորները կարող են շտկել այս հոտը, երբ նրանց հանձնարարեք անհայտ դեպքերը վերաբերվել որպես չարտոնված և շեշտադրել գրանցումը և անսպասելի սցենարների փորձարկումը:

Փորձեք դրանք:

Հիշեք. AI օգնականները շատ սխալներ են թույլ տալիս

Առանց համապատասխան հրահանգների

Հատուկ հրահանգներով

ChatGPT

ChatGPT

Կլոդ

Կլոդ

Տարակուսանք

Տարակուսանք

Կոպիլոտ

Կոպիլոտ

Երկվորյակներ

Երկվորյակներ

Եզրակացություն

Միշտ զգույշ վարեք անհայտ դեպքերը:


«Չգտնված»-ի նման կանխադրվածները կարող են հանգեցնել անվտանգության լուրջ խնդիրների և ֆինանսական կորուստների:


Անհայտ պատասխանների գրանցումն ու մերժումը դարձրեք ձեր զարգացման պրակտիկայի մաս:


Ծրագրավորման ընթացքում անվտանգության հետ կապված որոշումներ կայացրեք ձախ կողմում:

Հարաբերություններ

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxii

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-viii-8mn3352

Հրաժարում պատասխանատվությունից

Code Smells-ը իմ կարծիքն է:

Վարկեր

Լուսանկարը՝ Նաթանա Ռեբուսասի Unsplash- ում

https://www.youtube.com/watch?v=J2QOejhA6ek


Ենթադրությունները բոլոր անհաջողությունների մայրն են։

Ասաց Ուիսալը

Ծրագրային ապահովման ճարտարագիտության հիանալի մեջբերումներ


Այս հոդվածը CodeSmell Series-ի մի մասն է:

Ինչպես գտնել ձեր կոդի գարշահոտ մասերը