Refactoring kod - Kako napisati bolji kod

U svijetu programiranja jednostavno je toliko toga za naučiti.

3 godine u naprednom web razvoju, osjećam se loše kao kodiranje kao i uvijek. U programskom svijetu jednostavno je toliko toga za naučiti, tako da se ponizan programer nikada ne bi usudio reći da je njegov kôd savršen.

Ubrzao sam svoje CSS vještine veći dio karijere, pa mi iz dobrih razloga nedostaje povjerenje u moje JavaScript vještine. Budući da sam pozitivna osoba koja cijelo vrijeme traži rast, odlučila sam taj osjećaj neprimjerenosti pretvoriti u motivaciju umjesto u samozavaravanje.

Ispod je test koda koji je moj kolega stariji kolega razvio za postupak zapošljavanja. Dijelio je s ostalim suigračima kako bismo mogli dati povratne informacije o učinkovitosti korištenja ovog koda za određivanje sposobnosti programiranja kandidata. Iskoristio sam ovu priliku za poboljšanje svojih JavaScript vještina posvećujući cijeli dan razmišljanju o kodu.

Pitanje

Napišite funkciju koja će vam dati niz broja inačice verzije, tj. "1.12.4" i niz semverskih raspona, tj. "~ 1.12.0", vratite li da li navedena verzija spada u zadani raspon semvera kao boola.
Raspon semvera trebao bi podržavati tri sljedeća obrasca:
 1) Točna utakmica
 2) ^ Verzije veće u istom opsegu glavnih verzija
3) ~ Verzije veće u istom rasponu manjih verzija

Prvi pokušaj

U prvom sam pokušaju najlakše dovršio zadatak, koristeći .substring (), preklopni slučaj, za petlje i ako su uvjeti. Iako kôd izgleda ružno, djeluje, i vrlo je jednostavno dovršiti ovo rješenje jer su sve to osnove u JavaScriptu. Moja navika kodiranja je da prvo radim, a zatim preusmerim dok ne budem zadovoljan i na kraju smatram dovršenim. Vjerojatno nije najbolji način za većinu ljudi, ali navikao sam raditi na taj način. (U budućnosti bih volio promijeniti način rada i potrošiti više vremena na razmišljanje prije nego što počnem šifrirati.)

Drugi pokušaj

Znam da je dio kućišta prekidača i ako su uvjeti vrlo ružni, pa sam ih pokušao prepisati. Htio sam pronaći funkciju koja se može prebaciti na niz u ShouldMatchu poput .forEach (), ali onu koju mogu prekinuti petlju kad je rezultat === true pa sam pogledao i pronašao .some () što je upravo ono što sam želio. Bilo me je sram što se ne sjećam ove funkcije, ali oprostio sam se. Uostalom, postoje funkcije koje ne koristimo često i prirodno je zaboraviti ih. Moj je stav: koristite ih više ako smatrate da su korisni i na kraju ćete ih se sjetiti.

Treći pokušaj

Dijelio sam šifru sa starijim inženjerom, a on mi je dao neke konstruktivne povratne informacije. Zamolio me je da razmislim o boljem načinu da dobijem rangeSymbol i pokušam ne mijenjati rangeNumArr nakon deklaracije. Posljednje, ali ne najmanje bitno, rekao mi je da koristim .every (), što je prilično slično .some (), ali umjesto toga, petlja će se raspasti kad je povratna vrijednost lažna. Primio sam njegov savjet i napravio neke daljnje promjene, a to je rezultiralo lijepim dijelom koda:

Zaključak

Vrlo je važno priznati da niste dobri u nečemu i tražite poboljšanje.

Zatražite pomoć ako vam je potrebna. Uvijek je dobro imati drugačiju perspektivu, jer svi imaju različit proces razmišljanja. Ponekad vas tuđa mišljenja mogu nadahnuti!

Ne bojte se da trošite vrijeme na jednostavnu funkciju kada radite vježbu s kodiranjem. Imajte na umu da je programiranje kreativan proces koji troši priličnu količinu snage mozga kad se pravilno radi!

Pljeskajte i slijedite me ako vam se sviđa ovaj članak!

Dijelila bih svoje eksperimente i razmišljanja o programiranju kad god imam vremena;)