Дурна незразумелае праграмаванне ў цяжкі час (2018)
Каментарыі
Mewayz Team
Editorial Team
Сіла і пакуты For-Comprehension у Scala
Разуменне Scala з'яўляецца краевугольным каменем элегантнага функцыянальнага праграмавання. Гэта дазваляе распрацоўшчыкам паслядоўна выконваць аперацыі над манадычнымі тыпамі, такімі як `Option`, `Future` і `List`, у чыстым, імператыўным стылі. Замест заблытанай кашы з укладзеных выклікаў `flatMap` і `map`, мы можам напісаць код, які будзе адначасова чытэльным і выразным. Аднак гэты сінтаксічны цукар, хоць і вельмі смачны, мае схаваныя выдаткі. Кампілятар выдаляе цукар з абазначэння "для" ў асноўны манадычны ланцужок, але гэты працэс жорсткі, абмежаваны фіксаваным наборам метадаў і часам можа зацямняць сапраўдную вылічальную структуру. Для каманд, якія ствараюць складаныя сістэмы, такія як модульная бізнес-АС у Mewayz, разуменне і кантроль гэтага абясцукравання мае вырашальнае значэнне для напісання надзейнага, прадукцыйнага і зручнага для абслугоўвання кода.
Што такое аплікатыўная дэцугарацыя і чаму гэта важна?
Традыцыйна `for`-comprehension выдаляе цукар у ланцуг выклікаў `flatMap` з выклікам `map` у канцы. Гэта ўяўляе сабой манадычную паслядоўнасць, дзе кожны крок у разуменні залежыць ад выніку папярэдняга. Але што, калі вашы аперацыі незалежныя? Праверце форму рэгістрацыі карыстальніка: вам трэба праверыць імя карыстальніка, адрас электроннай пошты і пароль. Гэтыя праверкі не залежаць адна ад адной; яны могуць і павінны быць выкананы незалежна адзін ад аднаго, а іх вынікі аб'яднаны. Гэта сфера прыкладных функтараў. Прыкладное праграмаванне дазваляе праводзіць паралельную праверку і камбінаванне, прапаноўваючы патэнцыйныя перавагі ў прадукцыйнасці і больш дэкларатыўную апрацоўку памылак. Стандартная натацыя `for`, прывязаная да манадычнай паслядоўнасці, не можа выказаць гэты шаблон натыўным спосабам.
<цытата> «Здольнасць ператвараць цукар для разумення ў прыкладныя аперацыі, дзе гэта магчыма, змяняе гульню. Яна разблакуе больш дэкларатыўны код і можа значна павысіць эфектыўнасць за кошт незалежных вылічэнняў». - Інжынер платформы MewayzПрымяненне "Ужыць у межах": новая стратэгія абясцукравання
Канцэпцыя "Ужыць унутры" заключаецца ў тым, каб зрабіць кампілятар Scala разумнейшым. Замест таго, каб слепа абясшкоджваць кожны генератар (`<-`) у 'for'-разуменні ў 'flatMap', больш прасунутая стратэгія абясцукравання будзе аналізаваць залежнасці паміж радкамі. Калі значэнне, згенераванае ў наступным радку, не залежыць ад значэння з папярэдняга радка, для дэцукравання можа выкарыстоўвацца аплікацыйны `ap` (або больш знаёмая камбінацыя `product` і `map`) замест манадычнага `flatMap`. Гэта пераўтворыць паслядоўны ланцужок у графік паралельных вылічэнняў. Такія інструменты, як бібліятэка kittens, вывучылі гэта для аўтаматычнага вывядзення, але гэтая ідэя падштурхоўвае да больш фундаментальных магчымасцей у самой мове.
У Mewayz, дзе нашы модулі бізнес-АС часта апрацоўваюць праверку і агрэгацыю даных з некалькіх незалежных крыніц, выкарыстанне прыкладнога стылю прыводзіць да:
- Больш выразны намер: код відавочна паказвае, калі аперацыі незалежныя, што палягчае разуменне бізнес-логікі.
- Палепшаная прадукцыйнасць: незалежныя праверкі або выбарка даных могуць выконвацца паралельна, памяншаючы затрымку.
- Лепшае назапашванне памылак: у адрозненне ад манадычных ланцужкоў, якія хутка выходзяць з ладу, прыкладная праверка дазваляе збіраць усе памылкі адразу, што з'яўляецца жыццёва важнай функцыяй для карыстальніцкіх формаў і канчатковых кропак API.
Будучыня экспрэсіўных вылічэнняў у Scala
Перанясенне ўласнага аплікатыўнага абясцукравання ў натацыю "для" Scala - захапляльны рубеж. Гэта ўяўляе сабой рух да больш тонкіх і магутных функцыянальных канструкцый праграмавання непасрэдна ў самым даступным сінтаксісе мовы. Для такой платформы, як Mewayz, якая пабудавана на прынцыпе модульнасці і яснасці, гэтая эвалюцыя цалкам адпавядае нашым мэтам. Гэта дасць магчымасць нашым распрацоўшчыкам напісаць яшчэ больш дэкларатыўную бізнес-логіку, дзе код не толькі апісвае, што рабіць, але і падказвае, як гэта можа быць аптымальна выканана — паслядоўна, дзе неабходна, паралельна, калі магчыма. Гэта той тэхналагічны прагрэс, які дазваляе складаным сістэмам заставацца простымі, зразумелымі і эфектыўнымі.
💡 DID YOU KNOW?
Mewayz replaces 8+ business tools in one platform
CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.
Start Free →