Code Refactoring - Как да напишете по-добър код

Просто има толкова много за научаване в света на програмирането.

3 години в разработването на уеб сайтове, аз се чувствам толкова зле като кодирането, както винаги. Просто има толкова много да научите в света на програмирането, така че достатъчно скромен разработчик никога не би посмял да каже, че кодът му е перфектен.

През по-голямата част от кариерата си четях своите CSS умения и това ме кара да нямам увереност в моите JavaScript умения по добри причини. Като позитивен човек, който търси растеж през цялото време, избрах да превърна това чувство на неадекватност в мотивация, вместо в самоотвержение.

По-долу е тест на кода, който моят старши колега е изготвил за процеса на наемане. Той сподели с други съотборници, за да можем да дадем отзиви за ефективността на използването на този тест на кода, за да определим уменията за програмиране на кандидатите. Възползвах се от тази възможност да подобря своите JavaScript умения, като посветих целия ден на мислене за кода.

Въпроса

Напишете функция, която при даден низ от номер на версията, т.е. „1.12.4“ и низ от диапазон на север, т.е. „~ 1.12.0“, върнете дали дадената версия попада в дадения диапазон на север като булева.
Диапазонът на semver трябва да поддържа трите следните модела:
 1) Точно съвпадение
 2) ^ Версии по-големи в същия основен диапазон на версиите
3) ~ Версии по-големи в една и съща гама от малки версии

Първи опит

В първия опит потърсих най-лесния начин да изпълня задачата, използвайки .substring (), превключващ случай, за контури и ако са налице условия. Въпреки че кодът изглежда грозен, той работи и е много лесно да се довърши това решение, защото всичко това са основите на JavaScript. Моят навик при кодирането е първо да го накарам да работи, след това да го рефакторирам, докато не съм удовлетворен, и накрая да го считам за завършен. Вероятно не е най-добрият начин за повечето хора, но аз съм свикнал да работя по този начин. (В бъдеще бих искал да променя начина си на работа и да отделям повече време за мислене, преди да започна да кодирам.)

Втори опит

Знам, че кутията на превключвателя е и условията ако са много грозни, затова се опитах да ги пренапиша. Исках да намеря функция, която може да се прехвърля през масива в. По-скоро ме беше срам, че не помня тази функция, но си простих. В крайна сметка има функции, които не използваме често и е естествено да ги забравим. Моето отношение е: използвайте ги повече, ако ги намерите за полезни и в крайна сметка ще ги запомните.

Трети опит

Споделих кода със старшия инженер и той ми даде някои конструктивни отзиви. Той ме помоли да измисля по-добър начин за получаване на rangeSymbol и се опитвам да не променям rangeNumArr след декларацията. Не на последно място, той ми каза да използвам .every (), което е доста подобно на .some (), но вместо това цикълът ще се прекъсне, когато връщащата стойност е невярна. Взех неговия съвет и направих някои допълнителни промени и това доведе до красиво парче код:

заключение

Много е важно да признаете, че не сте добър в нещо и да се стремите към подобрение.

Потърсете помощ, ако имате нужда. Винаги е добре да имаме различна перспектива, защото всеки има различен мисловен процес. Понякога мнението на другите може да ви вдъхнови!

Не се страхувайте, че губите време за проста функция, когато правите упражнения за кодиране. Не забравяйте, че програмирането е творчески процес, който изисква правилно количество мозъчна сила, когато се прави правилно!

Аплодирайте и ме следвайте, ако ви харесва тази статия!

Бих споделял своите предни експерименти и мислите си за програмиране винаги, когато имам време;)