Դարավոր վեճ

Rails-ի շատ հավելվածներ դառնում են խառնաշփոթ, երբ մենք փորձում ենք ներդնել մեր ամբողջ տրամաբանությունը մոդելների մեջ՝ Օբյեկտ-կողմնորոշված ​​ձևով: Օբյեկտ-կողմնորոշված ​​կոդը կարող է լինել զվարճալի օգտագործման համար, համեմատաբար շատ ընթեռնելի և բավականին բազմակողմանի՝ սցենարների և իրադարձությունների արագ մոդելավորման համար: Ասել է թե, այն ունի իր թույլ կողմերը՝ ժառանգականության չափից ավելի օգտագործումը, վատ իրականացվող պոլիմորֆիզմը և պատահականորեն մուտացված վիճակները կարող են ծանրացնել նախագծերը և խեղդել զարգացման թիմերը: Որոշ կիրառություններում OO պարադիգմը դառնում է անգործունակ, քանի որ նախագիծը մեծ մասշտաբների է հասնում: Ինչպես Ջո Արմսթրոնգը տխրահռչակ ասաց, «Դուք բանան էիք ուզում, բայց ստացաք գորիլա, որը պահում էր բանանը և ողջ ջունգլիները»: Երբեմն այս հավելվածները փլուզվում են իրենց սեփական կախվածության/ժառանգական շղթաների ծանրության տակ:

Լրացուցիչ ընթերցում

Ֆունկցիոնալ ծրագրավորումը (FP) կարող է լինել բավականին էլեգանտ՝ կենտրոնանալով պարփակման վրա, առանց քաղաքացիության գործարկման ժամանակի (ավելի քիչ շարժվող մասեր, որոնք պետք է հետևեն հավելվածի գործարկմանը) և ավելի պաշտոնական կառուցվածքին: Այնուամենայնիվ, այն կարող է նաև բավականին խիտ լինել, էլեգանտության վրա կախվածությունը կարող է բավականին վախեցնել նույնիսկ միջին և բարձր մակարդակի ծրագրավորողների համար, և հաճախ ծածկագիրը խճճվում է, քանի որ դժվարանում է որոշել, թե ինչպես ճիշտ կազմակերպել գործառույթները/ծառայությունները: Սա Javascript-ի և դրա տարբերակների հետ կապված շատերի շրջանում տարածված բողոք է, թեև JS-ը հազիվ թե ներկայացնի FP-ի ամբողջ լանդշաֆտը: Այնուամենայնիվ, կան այնքան պարադիգմներ, որոնք աննշան է արտահայտել FP-ի միջոցով, որոնք չափազանց լայնածավալ կլինեն, որ այն չի կարող անտեսվել:

Ինձ դուր է գալիս Դեյվ Ֆեյրամի տեսակետը թեմայի վերաբերյալ, և նա լավ օրինակ է տալիս, թե ինչ օգուտներ է բերում FP-ն սեղանին: Ամփոփելու համար կարո՞ղ եք գտնել ստորև բերված կոդը արտահայտելու ամփոփ եղանակ՝ օգտագործելով OO պարադիգմը:

mapReducer dataset partitioner mapper reducer =
  let partitions = partitioner dataset in
    reduce reducer (map mapper partitions)

Տուգի. Թեև, պարզապես իմ հակադրությունը տալու համար, այս աստիճանի խճճվածությունը շատ ավելին է, քան շատ ծրագրավորողներ, ովքեր կարող են տարբեր ծագում ունենալ: Այսպիսով, փաստարկների մեծ մասը, իմ կարծիքով, իրոք հանգում է նրան, թե արդյոք ծրագրավորողների կամ մշակողների թիմը գնահատում է տիրույթի մոդելավորման բնորոշ ընթեռնելիությունը և արագությունը, որով պարծենում է OO-ն՝ ընդդեմ կոշտության և աբստրակցիայի, որն ավելի հեշտ է հնարավոր FP-ի հետ:

Լրացուցիչ ընթերցում