Wpis z mikrobloga

Mirki zrobi mi ktos male code review? https://jsfiddle.net/qo38n8rd/31/

You have an array of objects in JavaScript. Each one contains a name (a string) and age (a number). Write a function which returns the objects ordered by age.


Jest to pytanie rekrutacyjne na front-enda. Pracy na razie nie mam zamiaru zmieniac, ale z nudow czasami mozna sie pobawic ( ͡° ͜ʖ ͡°)

Co byscie tu poprawili, a co ulepszyli?

#js #javascript #programowanie
  • 23
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Afrael: Front end. Moim skromnym zdaniem chodzi tu bardziej o sprawdzenie stylu pisania, czy kod jest czytelny i latwy do zrozumienia. Z doswiadczenia wiem, ze sa osoby, ktore potrafia tak pisac kod, ze czlowiek siedzi i rozkminia o co chodzi.
  • Odpowiedz
@xxx2013:
- Używasz składni JSa z lat 90. Podszkól się z ES6 (chodzi mi szczególnie o pętle for, vary, brak fluent api).
- Funkcja sortByAge() tworzy tablicę obiektów, a powinna sortować po wieku według nazwy.
- Funkcja createArrayOfObjects() powinna przyjmować jako parametr liczbę obiektów do utworzenia. Ewentualnie wydziel tę liczbę do consta zadeklarowanego gdzieś u góry. Oprócz tego nazwa kompletnie nic nie mówi. Array obiektów czego?
- Masa liczb w kodzie bez żadnego komentarza (poczytaj o antywzorcach, "magicznej
  • Odpowiedz
@xxx2013: createArrayOfObjects ta nazwa jest słaba, może createArrayOfDevelopers? tworzysz tablicę developerów, a nie jakichś bliżej nieokreslonych obiektów.
Math.floor(Math.random() * (max - min + 1)) + min - to bym z createArrayOfObjects wyrzucił do osobnej funkcji generateRandomAge.
całe przygotowanie pojedynczego developera też wyodręniłbym do funkcji, żeby jedna funkcja nie robiła jednocześnie dwóch rzeczy (developera i listy developerów)
funkcja sortByAge nie powinna zajmować się stworzeniem kolekcji, tylko posortowaniem jej. Kolekcję
  • Odpowiedz
Math.floor(Math.random() * (max - min + 1)) + min - to bym z createArrayOfObjects wyrzucił do osobnej funkcji generateRandomAge.

całe przygotowanie pojedynczego developera też wyodręniłbym do funkcji, żeby jedna funkcja nie robiła jednocześnie dwóch rzeczy (developera i listy developerów)


@kao3991: Przyszlo mi to do glowy.

var arrayOfDevelopers = []; trochę chyba za długie
  • Odpowiedz
@xxx2013: nie chodzi o to żeby nazwy były długie, im krótsza tym lepsza, ale musi dobrze opisywać zmienną, zamiast 'arrayOfDevelopers' napisałbym 'developers', po pierwsze nieistotne jest to, że to jest array, a po drugie krócej
  • Odpowiedz
@xxx2013: może kwestia podejścia, żaden ze mnie guru, ale ja wyznaję raczej zasadę że nazwę należy skrócić kiedy tylko można bez straty czytelności - po prostu łatwiej się czyta.
  • Odpowiedz
@rubytree: tak, to array w nazwie nie jest potrzebne.
Poza tym createArrayOfObjects to zła nazwa dla funkcji, szczególnie, że zwracamy arrayOfDevelopers
Powinno być developers i createDevelopers
Tutaj jest zbyt mało czytelnie z jakiego zakresu wiek może być wylosowany - Math.floor(Math.random() * (max - min + 1)) + min
  • Odpowiedz