
Paghubad
Ang among kasinatian nagpakita nga ang mga dili teknikal ug self-teach nga mga developer kasagarang nagsalig sa heuristic nga mga pamaagi kaysa sa mga prinsipyo sa teoretikal.
Ang heuristics mga sumbanan ug napamatud-an nga mga lagda nga nakat-unan sa usa ka developer gikan sa kasinatian. Mahimong dili kini molihok nga hingpit o sa limitado nga sukod, apan kini molihok nga maayo ug dili magkinahanglan og daghang paghunahuna. Ania ang pipila ka mga pananglitan sa heuristics:
- "Gamita
$(document).ready(function(){})para sa pag-initialize sa code sa mga jQuery sites" - "Disenyo
var self = thisgikinahanglan aron tawagon ang usa ka pamaagi sa usa ka callback function" - "Ang mga gimbuhaton sa pana walay mga operator"
return»
Sa samang higayon, ang usa ka teoretikal nga prinsipyo magamit sa pagpangita og mga solusyon sa ubang mga problema. Kini kanunay nga tinuod ug kanunay nga nagtino sa mismong operasyon sa usa ka gihatag nga elemento. Ang mga teoretikal nga prinsipyo naglakip, pananglitan:
Palihug timan-i: among gilakip lamang ang mga ehemplo sa heuristic sa mga marka sa kinutlo aron ipasiugda ang kinaiya sa heuristics nga gihimo sa balay kon itandi sa kahigpit sa ilang teoretikal nga pundasyon. Samtang walay usa ka heuristic nga magamit sa tanan, kini molihok sa igo nga mga sitwasyon nga ang mga developer nga mogamit niini makahimo og working code nga dili hingpit nga masabtan ang mga pamaagi niini.
Mga argumento pabor sa teoretikal nga pamaagi
Kanunay namong nasugatan ang mga developer nga walay teknikal nga background nga nagpanuko sa pagsulbad sa mga problema gamit ang mga prinsipyo sa teoretikal. Kasagaran kini tungod kay wala silay higayon nga makat-on niini sa sayong bahin sa ilang mga karera, ug tungod kay ang heuristics molihok nga maayo, padayon nila kini nga gigamit.
Apan, bisan pa sa daw pagkakomplikado niini, ang pagkat-on sa teorya mahimong mapuslanon kaayo. Ngano man? Tungod kay ang teorya magtugot kanimo nga mobati nga masaligon nga ang imong solusyon molihok, ug sa pagkuha og mga tubag sa mga bag-ong pangutana nga independente nga dili kinahanglan nga mangita og mga solusyon sa uban. Sa mubo nga panahon, ang mga heuristic algorithm daw yano ug paspas, apan kini kanunay nga mosangpot sa dili hingpit nga mga solusyon—kon kini mosangpot man gani.
Dugang pa, ang pagsalig sa heuristics dili gyud makatudlo kanimo unsaon pagsulbad sa mga problema. Mahimong kanunay kang makakita og solusyon nga mogana, apan sa madugay o madali makaabot ka sa usa ka dead end nga walay kalutsan. Ang mga C&P programmer nagsalig sa heuristics sa ilang trabaho.
Mga sukdanan sa lebel sa kahanas sa developer
Kon mag-interbyu sa mga frontend developer, among gihagit ang programming ug gisultihan sila nga gawasnon sila sa paggamit sa bisan unsang mga kapanguhaan, Google man o Stack Overflow. Niining paagiha, dali namong mahibal-an kung ang usa ka developer usa ka heuristic o theoretical learner.
Ang nauna, walay eksepsiyon, mokopya sa code gikan sa halos angay nga mga ehemplo sa Stack Overflow. Sa higayon nga ang code dili molihok sama sa giplano, mao na lang nila kini sugdan sa pag-usab aron mohaom sa ilang mga panginahanglan. Kasagaran, mapakyas sila.
Ang ulahi lagmit mangita og mga tubag sa dokumentasyon sa API. Didto, makakita sila og impormasyon bahin sa pila ka parameter ang gidawat sa usa ka partikular nga function, o ang piho nga syntax para sa gipalapdan nga porma sa gitinguha nga CSS property.
Sulod sa unang lima ka minuto sa interbyu, mahimo nimong mahibal-an kung unsang klase sa programmer ang kandidato.
Pananglitan:
Atong kuhaon ang developer nga si Bill isip ehemplo. Nikuha siyag daghang training courses, nisulbad og pipila ka problema sa JavaScript, ug naghimo og mga website sa iyang libreng oras, apan wala gyud siya "tinuod" nagtuon og JavaScript.
Usa ka adlaw, nakakita si Bill og butang nga sama niini:
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 }
}
Ang ingon nga butang mahimong magpakita sa usa ka lista sa mga tiggamit ug kung sila ba nagparehistro alang sa usa ka partikular nga kalihokan.
Ingnon ta nga kinahanglan kuhaon ni Bill ang lista sa mga rehistradong tiggamit. Sa ato pa, i-filter sila. Nakakita siyag code diin ang pamaagi .filter() gigamit sa pagsala sa lista. Mao nga kini mosulay og sama sa:
const attendees = usersById.filter(user => user.registered);Ug mao kini ang iyang makuha:
TypeError: usersById.filter is not a function “Wala niy pulos,” naghunahuna si Bill, kay nakita niya ang kodigo diin .filter() nagsilbing usa ka pansala.
Ang problema kay si Bill misalig sa heuristic method. Wala niya nahibal-an nga filter — usa ka pamaagi nga gihubit sa mga array, samtang usersById - usa ka ordinaryo nga butang nga walay pamaagi filter.
Naglibog, nangita si Bill og "Google"JavaScript filter"Nakakita siyag daghang mga reperensya sa mga array ug nakaamgo nga kinahanglan niyang i-transform usersById ngadto sa usa ka array. Dayon, kon hangyoon "I-convert ang object ngadto sa array sa javascript"nakakita siyag mga ehemplo sa Stack Overflow gamit ang Object.keys()Pagkahuman niana, maningkamot siya:
const attendees = Object.keys(usersById).filter(user => user.registered); Niining higayona walay gipakita nga sayop, apan sa katingala ni Bill, ang field attendees nagpabilin nga walay sulod.
Point mao nga Object.keys() mobalik sa mga yawe sa usa ka butang, apan dili sa mga bili niini. Sa panguna, ang ngalan sa variable user dali nga malimbongon tungod kay dili kini usa ka butang user, ug ang identifier, nga mao, ang string. Tungod kay ang attribute registered kay ang mga string wala gihubit, filter mo-evaluate sa matag entry isip false, ug ang array mogawas nga walay sulod.
Gisusi pag-ayo ni Bill ang mga tubag sa Stack Overflow ug gihimo ang mosunod nga pagbag-o:
const attendees = Object.keys(usersById).filter(id => usersById[id].registered); Mas maayo ang resulta karong panahona: ["5", "27", "39"]Apan ang mga butang sa mga bisita ang gusto ni Bill nga makuha, dili ang ilang mga ID.
Aron mahibal-an kung unsaon pagsala ang mga bisita, ang nasuko nga si Bill nangita og "Pangsala sa butang sa JavaScript", nagtuon sa mga resulta sa pagpangita sa Stack Overflow ug nakakaplag uban sa mosunod nga kodigo:
Object.filter = (obj, predicate) =>
Object.keys(obj)
.filter( key => predicate(obj[key]) )
.reduce( (res, key) => (res[key] = obj[key], res), {} );Gikopya ni Bill kini nga mga linya ug misulay:
const attendees = Object.filter(usersById, user => user.registered); Nagtrabaho ang tanan - bisan kung dili klaro kung ngano. Wala kasabot si Bill kung para asa kini. reduce ug unsaon kini paggamit. Dugang pa, wala masabti ni Bill nga iyang gihubit lang para sa global nga butang Object bag-ong dili-estandard nga pamaagi.
Apan wala’y pakialam si Bill—molihok ra man! Wala pa siyay interes sa mga sangputanan sa pagkakaron.
Unsa may sayop nga nahimo ni Bill?
Gisulayan ni Bill ang usa ka heuristic nga pamaagi aron masulbad ang problema ug nasugatan ang mosunod nga mga problema:
- Nagamit na
.filter()sa variable, nadawat ni BillTypeErrorWala niya kasabot ngafilterdili makita sa normal nga mga butang. - Nag-aplay siya
Object.keys()aron "himoon ang usa ka butang nga usa ka array," apan kana lang wala molampos. Kinahanglan niyang maghimo og array sa mga bili sa butang. - Bisan human niya makuha ang mga kantidad ug gamiton kini isip filter criteria, mga ID ra ang iyang nakuha imbes nga mga user object nga nalangkit sa maong mga ID. Kini tungod kay ang filtered array adunay mga ID, dili mga user object.
- Sa paglabay sa panahon, gibiyaan ni Bill kini nga pamaagi ug nakakita og solusyon online. Apan, wala gihapon niya masabti kon unsaon kini pagtrabaho—ug dili siya mag-usik og panahon sa pagsulay sa pagsabot niini, kay naa pa siyay ubang buhatonon.
Kini usa ka pangagpas nga ehemplo, apan daghan na kitag nasugatan nga mga developer nga nagsulbad sa mga problema sa parehas nga paagi. Aron masulbad kini nga epektibo, kinahanglan nimong likayan ang mga pamaagi sa heuristic ug tun-an ang teorya.
Atong hisgotan ang mga sukaranan
Kon si Bill usa ka tigpaluyo sa teoretikal nga pamaagi, ang proseso mahimong ingon niini:
- Ilha ang gihatag nga input data ug tinoa ang gitinguha nga output base sa mga kabtangan niini: "Naa koy object kansang mga key kay mga string nga nagrepresentar sa mga ID, ug kansang mga value kay mga object nga nagrepresentar sa mga user. Gusto ko makakuha og array kansang mga value kay mga user object—apan mga object lang sa mga rehistradong user."
- Sabta kon unsaon pag-iterate pinaagi sa usa ka butang: "Nahibal-an ko nga makakuha ako usa ka array sa mga yawe sa usa ka butang pinaagi sa pagtawag
Object.keys()Gusto ko makakuha og array kay ang mga array mosuporta sa iteration.". - Sabta nga kini nga pamaagi makatabang kanimo sa pagkuha og mga yawe, ug kinahanglan nimo nga usbon ang mga yawe ngadto sa mga kantidad, ug hinumdomi
map— usa ka klaro nga pamaagi sa paghimo og bag-ong array pinaagi sa pag-usab sa mga bili sa laing array:Object.keys(usersById).map(id => usersById[id]) - Tan-awa nga naa na kay ma-filter nga array sa custom objects nga adunay aktuwal nga mga kantidad nga gusto nimong i-filter:
Object.keys(usersById).map(id => usersById[id]).filter(user => user.registered)
Kon mao pa kini ang gipili ni Bill, unta nakatrabaho siya para namo.
Ngano nga ang mga tawo dili kanunay modangop sa teorya?
Usahay wala lang sila maanad niini. Kasagaran, busy kaayo sila nga wala nay panahon sa pagkat-on niining pamaagi sa pagsulbad sa problema—kinahanglan lang nila nga molampos kini. Nameligro sila nga himuon kining batasan, nga makababag sa ilang pag-uswag sa kahanas.
Aron malikayan ang ingon nga mga sayop, kanunay magsugod sa teorya. Sa matag yugto sa proseso, hunahunaa ang piho nga datos nga imong gigamit. Imbis nga kanunay nga mosalig sa pamilyar nga mga sumbanan, hunahunaa ang mga primitive data type: arrays, objects, strings, ug uban pa. Kung mogamit usa ka function o pamaagi, konsultaha ang dokumentasyon aron masabtan kung unsang mga data type ang ilang gisuportahan, unsang mga argumento ang ilang gidawat, ug kung unsa ang resulta nga output.
Uban niini nga pamaagi, makakita ka og solusyon nga mogana sa unang pagsulay. Makasalig ka sa katukma niini, tungod kay imong gipili pag-ayo ang imong mga aksyon base sa gihatag nga mga input ug gitinguha nga mga output. Susiha ang mga sukaranan sa matag operasyon (mga tipo sa datos ug mga kantidad sa pagbalik), imbes nga dili klaro nga mga termino sa negosyo (sama sa "mga rehistradong tiggamit").
Tinubdan: www.habr.com
