
fandikan-teny
Ny traikefanay dia mampiseho fa matetika ny mpamorona tsy ara-teknika sy ny mpampiana-tena dia tsy miantehitra amin'ny fitsipika teorika, fa amin'ny fomba heuristika.
Ny heuristics dia lamina sy fitsipika voaporofo izay nianaran'ny mpamorona tamin'ny fampiharana. Mety tsy miasa tsara izy ireo na voafetra ihany, saingy miasa tsara izy ireo ary tsy mitaky fieritreretana matotra. Ireto misy ohatra sasantsasany amin'ny heuristika:
- "Ampiasao
$(document).ready(function(){})ho fanombohana ny kaody amin'ny tranokala jQuery" - "Design
var self = thistakiana amin'ny fiantsoana fomba iray ao amin'ny fiasa callback" - "Tsy misy mpandraharaha ny fiasan'ny arrow
return»
Mandritra izany fotoana izany, ny fitsipika teorika dia azo ampiasaina mba hahitana vahaolana amin'ny olana hafa. Marina foana izany ary matetika no mamaritra ny firafitry ny fiasan'ny singa iray manokana. Ny fitsipika teorika dia ahitana, ohatra:
Mariho fa ohatra amin'ny heuristics ihany no asiana marika amin'ny teny notsongaina mba hanamafisana ny maha-artisan'ny heuristics raha oharina amin'ny hamafin'ny rafitra teorika. Tsy misy na iray aza amin'ireo ohatra heuristika azo ampiharina amin'ny rehetra, fa miasa amin'ny toe-javatra ampy izay ahafahan'ny mpamorona mampiasa azy ireo mahazo fehezan-dalàna miasa nefa tsy mahafantatra tsara ny fomba fiasany.
Fanehoan-kevitra manohana ny fomba fiasa teorika
Hitanay matetika fa tsy sahy mamaha olana amin'ny fampiasana fitsipika teorika ireo mpamorona tsy ara-teknika. Matetika izany dia satria tsy nanana fahafahana hianatra azy ireo tany am-piandohan'ny asany izy ireo, ary satria miasa mahafa-po ny heuristic, dia manohy mampiasa azy ireo izy ireo.
Na izany aza, na dia eo aza ny fahasarotana hita, ny fianarana ny teoria dia mety ho tena ilaina. Hatao inona? Satria ny teoria dia hamela anao hahatsapa ho matoky fa mahomby ny vahaolanao, ary koa hahazoana valiny tsy miankina amin'ny fanontaniana vaovao, tsy mila mitady vahaolana ho an'olon-kafa. Amin'ny fotoana fohy, ny algorithm heuristic dia mety ho toy ny vahaolana tsotra sy haingana, saingy matetika dia mitarika ho amin'ny vahaolana tsy dia tsara loatra - raha misy izany.
Ankoatr'izay, amin'ny fiankinan-doha amin'ny heuristika dia tsy hianatra hamaha olana mihitsy ianao. Angamba matetika ianao dia afaka mahita vahaolana miasa, fa na ho ela na ho haingana dia ho tonga amin'ny fiafaran'ny fahafatesana izay tsy hahitanao lalana hivoahana. Miantehitra amin'ny heuristika amin'ny asany ny mpandrindra C&P.
Famaritana ny haavon'ny fahaizan'ny developer
Rehefa manao dinidinika amin'ny mpamorona frontend izahay dia manome azy ireo fanamby amin'ny fandaharana ary milaza amin'izy ireo fa afaka mampiasa loharano rehetra izy ireo, na Google na Stack Overflow. Amin'izany fomba izany dia azonao atao ny mamaritra mora foana raha mpanaraka heuristic na teoria ny mpamorona.
Ny voalohany, tsy misy ankanavaka, dia mandika kaody avy amin'ny ohatra tsara kokoa na latsaka avy amin'ny Stack Overflow. Rehefa tsy mandeha araka ny nokasaina ilay kaody vao manomboka manitsy azy hifanaraka amin'ny tenany. Matetika izy ireo no tsy manao izany.
Ity farany dia mitady valiny ao amin'ny antontan-taratasy API. Any izy ireo no mahita fampahalalana momba ny isan'ny masontsivana ataon'ny asa iray manokana, na ny syntax manokana amin'ny endrika miitatra amin'ny fananana CSS tiana.
Efa ao anatin'ny dimy minitra voalohany amin'ny dinidinika, azonao atao ny mamaritra tsara hoe karazana programa inona ilay kandidà.
ohatra
Andeha horaisintsika ho ohatra ny developer Bill. Nanao fiofanana maromaro izy, namaha olana maro momba ny JavaScript, ary nanoratra tranonkala tamin'ny fotoana malalaka, saingy tsy "tena" nianatra JavaScript izy.
Indray andro i Bill dia nahita zavatra toy izao:
const usersById = {
"5": { "id": "5", "name": "Adam", "registered": true },
"27": { "id": "27", "name": "Bobby", "registered": true },
"32": { "id": "32", "name": "Clarence", "registered": false },
"39": { "id": "39", "name": "Danielle", "registered": true },
"42": { "id": "42", "name": "Ekaterina", "registered": false }
}
Ny zavatra toy izany dia afaka mampiseho lisitry ny mpampiasa ary raha efa nisoratra anarana ho an'ny hetsika iray manokana izy ireo.
Andao atao hoe mila maka lisitr'ireo mpampiasa voasoratra anarana i Bill. Raha lazaina amin'ny teny hafa, sivana azy ireo. Izy no nahita ny code izay ny fomba .filter() ampiasaina hanivana ny lisitra. Noho izany dia manandrana zavatra toy izao izy:
const attendees = usersById.filter(user => user.registered);Ary izao no azony:
TypeError: usersById.filter is not a function “Karazana tsy misy dikany izany”, hoy i Bill, satria hitany ilay fehezan-dalàna .filter() nanao sivana.
Ny olana dia niantehitra tamin'ny fomba heuristic i Bill. Tsy azony izany filter dia fomba iray voafaritra amin'ny arrays, fa usersById - zavatra tsotra tsy misy fomba filter.
Misafotofoto Bill Googles "javascript filter" Mahita fitenenana maromaro momba ny array izy ary mahatsapa fa mila mitodika izy usersById amin'ny array. Avy eo amin'ny fangatahana "javascript manova zavatra ho array»dia mahita ohatra ao amin'ny Stack Overflow mampiasa Object.keys(). Aorian'izany dia manandrana izy:
const attendees = Object.keys(usersById).filter(user => user.registered); Tsy nisy hadisoana hita tamin'ity indray mitoraka ity, fa ny hagagan'i Bill dia ny saha attendees mijanona foana.
Point dia Object.keys() mamerina ny fanalahidin'ilay zavatra, fa tsy ny sandany. Amin'ny ankapobeny, ny anaran'ny variable user mora mamitaka satria tsy zavatra user, ary ny famantarana, izany hoe ny tady. Hatramin'ny toetra registered tsy voafaritra ho an'ny tady, filter manombana ny fidirana tsirairay ho diso, ary mivoaka foana ny array.
I Bill dia mijery akaiky ny valiny ao amin'ny Stack Overflow ary manao izao fanovana manaraka izao:
const attendees = Object.keys(usersById).filter(id => usersById[id].registered); Amin'ity indray mitoraka ity dia tsara kokoa ny vokatra: ["5", "27", "39"]. Saingy i Bill no te haka ny zavatra ho an'ny mpitsidika, fa tsy ny karapanondrony.
Mba hamantarana ny fomba hanivanana mpitsidika, sosotra i Bill dia nitady ny "javascript object filter", mandinika ny valin'ny fikarohana ao amin'ny Stack Overflow ary mahita miaraka amin'ity code manaraka ity:
Object.filter = (obj, predicate) =>
Object.keys(obj)
.filter( key => predicate(obj[key]) )
.reduce( (res, key) => (res[key] = obj[key], res), {} );Mandika ireto andalana ireto i Bill ary manandrana:
const attendees = Object.filter(usersById, user => user.registered); Miasa daholo ny zava-drehetra - na dia tsy mazava aza ny antony. Tsy azon'i Bill ny anton'izany reduce sy ny fomba ampiasana azy. Ankoatra izany, tsy takatr'i Bill fa nofaritany ho an'ny tanjona manerantany fotsiny Object fomba vaovao tsy manara-penitra.
Saingy tsy miraharaha i Bill - miasa izany! Mbola tsy liana amin’izay mety ho vokany izy.
Inona no tsy nety nataon’i Bill?
Nanandrana fomba heuristika i Bill hamahana ilay olana ary tojo ireto olana manaraka ireto:
- mampiasa
.filter()amin'ny fari-piainana, nahazo an'i BillTypeError. Tsy azony izanyfilterdia tsy hita amin'ny zavatra tsotra. - Nangataka izy
Object.keys()mba "hamodika ny zavatra ho array", fa izany mihitsy no tsy nitondra vokatra. Nila namorona karazana soatoavina izy. - Na dia taorian'ny nahazoany ny soatoavina sy ny fampiasana azy ireo ho fepetra amin'ny sivana, dia tsy nahazo afa-tsy famantarana izy fa tsy zavatra mpampiasa mifandray amin'ireo famantarana ireo. Izany dia satria misy ID ny laharan'ny voasivana fa tsy zavatra mpampiasa.
- Rehefa nandeha ny fotoana, dia nandao an'io fomba io i Bill ary nahita vahaolana mahomby tamin'ny Internet. Na izany aza, mbola tsy azony ny fomba fiasan'izy io - ary tsy handany andro hiezahana hamantatra izany izy, satria manana zavatra hafa hataony.
Ohatra artifisialy ity, saingy imbetsaka izahay no nahita ireo mpamorona mamaha olana amin'ny fomba mitovy. Mba hamahana azy ireo amin'ny fomba mahomby dia mila miala amin'ny fomba heuristika sy ny teoria fianarana ianao.
Andao hidina any amin'ny fototra
Raha mpanohana ny fomba fiasa ara-teorika i Bill, dia ho toy izao ny fizotrany:
- Fantaro ireo fampidirana nomena ary fantaro ny vokatra tadiavina - amin'ny lafin'ny fananany: "Manana zavatra aho izay misy kofehy maneho ID ary ny sandany dia zavatra maneho ny mpampiasa. Te-hahazo array aho izay ny soatoavina dia ho zavatra mpampiasa - fa ny mpampiasa voasoratra anarana ihany"
- Fantaro ny fomba famerimberenana amin'ny alalan'ny zavatra iray: "Fantatro fa afaka mahazo ny fanalahidin'ny fanalahidy amin'ny zavatra iray aho amin'ny fiantsoana
Object.keys(). Te-hahazo array aho satria ny arrays dia manohana ny fanodinana". - Fantaro fa ity fomba ity dia manampy amin'ny fahazoana ny fanalahidy, ary mila manova ny fanalahidy ho soatoavina ianao, ary tadidio ny momba
mapdia fomba mazava amin'ny famoronana array vaovao amin'ny fanovana ny soatoavin'ny array hafa:Object.keys(usersById).map(id => usersById[id]) - Jereo fa manana karazana zavatra mahazatra azo sivana ianao izao izay misy ny sanda tena tianao hosivana:
Object.keys(usersById).map(id => usersById[id]).filter(user => user.registered)
Raha nandeha tamin’io lalana io i Bill, dia ho afaka niasa ho antsika izy.
Nahoana ny olona no tsy mampiasa teoria matetika?
Indraindray izy ireo dia tsy mahafantatra azy. Matetika indrindra, sahirana loatra izy ireo ka tsy manam-potoana hianarana io fomba famahana olana io - mila manao zavatra fotsiny izy ireo. Atahorana ny hamadika izany fomba izany ho fahazarana izay ho lasa sakana amin'ny fampivelarana ny fahaizany.
Mba hisorohana ny fahadisoana toy izany, manomboka amin'ny teoria foana. Isaky ny dingana amin'ny dingana, eritrereto hoe inona no angona ifampiraharahanao. Raha tokony hiantehitra amin'ny lamina mahazatra foana, dia diniho ny karazana angona primitive: array, object, string, sns. Rehefa mampiasa asa na fomba ianao dia jereo ny antontan-taratasy mba hahazoana antoka fa fantatrao tsara ny karazana angon-drakitra tohanany, inona ny tohan-kevitra ilainy ary inona ny vokatra azony.
Amin'ny alalan'ity fomba ity dia ho afaka hahita vahaolana miasa ianao amin'ny fanandramana voalohany. Afaka matoky ny fahamarinany ianao, satria nisafidy manokana ny hetsikao ianao mifototra amin'ny angon-drakitra nomena sy ny angona vokatra tadiavina. Midira ao amin'ny fototry ny asa tsirairay (karazana angona sy sanda miverina), fa tsy ny fiteny fandraharahana manjavozavo (toy ny "mpampiasa voasoratra anarana").
Loharano: www.habr.com
