Վերադառնալ
Կրկնօրինակումը ավելի էժան է, քան սխալ աբստրակցիան. Սենդի Մեցի զգուշացումը
SiTech AI Team2 წთ. საკითხავი

Կրկնօրինակումը ավելի էժան է, քան սխալ աբստրակցիան. Սենդի Մեցի զգուշացումը

2014-ի RailsConf-ի զեկույցում և 2016-ի էսսեում Սենդի Մեցը պնդեց, որ կրկնօրինակումը շատ ավելի էժան է, քան սխալ աբստրակցիան, նկարագրեց ընդհանուր ֆունկցիայի՝ պայմաններով լցված թակարդի վերածվելու ուղին և վերադարձի բաղադրատոմսը։

Կրկնօրինակումը շատ ավելի էժան է, քան սխալ աբստրակցիան

2014 թվականին RailsConf-ում Սենդի Մեցը իր «All the Little Things» զեկույցի կարճ հատվածը նվիրեց մի թեզիսի, որը մինչ օրս շրջանառվում է ծրագրավորող թիմերում. կրկնօրինակումը շատ ավելի էժան է, քան սխալ աբստրակցիան։ Նրա խորհուրդը ուղիղ էր՝ նախընտրեք կրկնօրինակումը սխալ աբստրակցիայի փոխարեն։ Արձագանքն այնքան ուժեղ էր, որ նա ավելի ուշ այդ գաղափարը վերածեց էսսեի. տեքստը սկզբում գրվել է նրա Chainline տեղեկագրի համար և 2016 թվականի հունվարին վերահրատարակվել բլոգում։ Որոշ մշակողներ ասացին, թե նա խելքը կորցրել է. շատ ավելիները նշեցին, որ նկարագրված ձևանմուշը ամենուր է իրենց իսկ կոդում։

Ինչպես լավ աբստրակցիան վերածվում է թակարդի

Մեցը նկարագրում է կրկնվող պատմություն։ Ծրագրավորող A-ն նկատում է կրկնօրինակումը, առանձնացնում այն, անուն տալիս՝ մեթոդ, երբեմն դաս, և բոլոր պատճենները փոխարինում նոր աբստրակցիայով։ Կոդը կատարյալ է թվում։ Ժամանակն անցնում է։ Գալիս է նոր պահանջ, որին աբստրակցիան գրեթե համապատասխանում է, բայց ոչ ճշգրիտ։ Ծրագրավորող B-ն իրեն պարտավորված է զգում պահպանել այն, ավելացնում է պարամետր և պայմանական տրամաբանություն։ Հաջորդ պահանջը բերում է ևս մեկ պարամետր ու ևս մեկ պայման, և ցիկլը շարունակվում է այնքան, մինչև կոդը դառնում է անհասկանալի։

Թակարդը ոչ պակաս հոգեբանական է, քան տեխնիկական։ Գոյություն ունեցող կոդը ինքն իր օգտին է խոսում. նրա ներկայությունը հուշում է, որ այն ճիշտ ու անհրաժեշտ է, և որ ինչ-որ մեկի ջանքն է մարմնավորում, իսկ այդ ջանքը պաշտպանելու ցանկությունը ուժեղ է։ Որքան բարդ ու անհասկանալի է կոդը, այնքան մեծ է այն պահելու ճնշումը՝ սա խորտակված ծախսերի մոլորությունն է։ Երբ հաջորդ մշակողը գալիս է, ընդհանուր ֆունկցիան արդեն ոչ թե մեկ գաղափար է, այլ պայմաններով լցված պրոցեդուրա, որը դժվար է հասկանալ և հեշտ՝ կոտրել։

Վերադարձի ուղին՝ ներդնել, կրճատել, նորից առանձնացնել

Նրա բաղադրատոմսը հակաինտուիտիվ է. երբ աբստրակցիան սխալ է, առաջ շարժվելու ամենաարագ ուղին հետ է տանում։ Ներդրեք աբստրահված կոդը բոլոր կանչողների մեջ, յուրաքանչյուրում պարամետրերով որոշեք, թե որ մասն է իրականում պետք, իսկ մնացածը ջնջեք։ Այսպես միասին անհետանում են և՛ աբստրակցիան, և՛ պայմանները, և յուրաքանչյուր կանչող մնում է միայն իր օգտագործած կոդով։

Փորձած թիմերը հաճախ հայտնաբերում էին, որ կանչողները իրականում նույնը չէին անում։ Հին աբստրակցիան հեռացնելուց հետո հնարավոր դարձավ նորից առանձնացնել կրկնօրինակումը և նոր աբստրակցիաներ կառուցել ձեռք բերված փորձից. ֆունկցիաների ավելացումը արագացավ։ Մեցի գործնական կանոնը՝ եթե ընդհանուր կոդում պարամետրեր եք փոխանցում և պայմանական ուղիներ ավելացնում, աբստրակցիան սխալ է։ Այն վաղաժամ թողնելը ավելի քիչ ցավոտ է, քան պաշտպանելը։ «Երբ աբստրակցիան սխալ է, առաջ շարժվելու ամենաարագ ուղին հետ է տանում։ Սա նահանջ չէ, սա առաջընթաց է ավելի լավ ուղղությամբ», գրում է նա։

SSiTech

SiTech — AI-ով հզորացված վեբ մշակում

Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։