Codereview początków z Js'em!

Codereview początków z Js'em!
Mateuszto
  • Rejestracja:prawie 7 lat
  • Ostatnio:4 miesiące
  • Lokalizacja:Poznań
  • Postów:163
0

https://codepen.io/mateuszto/pen/ZMpRyq -> Za dużo nie ma, ale chciałbym wiedzieć, czy można to zapisywać krócej i czy wszystko jest okej ;D Z góry dziekuję!

cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około godziny
  • Lokalizacja:Poznań
  • Postów:8797
3

Tak na szybko dwie rzeczy bym zmienił:

  1. nie dawać na sztywno wpisanych wartości (np. text.style.fontFamily = 'arial';) ale gdzieś zdefiniować określone style/zmienne, a potem się do nich odwoływać. Obecnie jest to proste i ewentualne zmiany nie będą problemem, ale w wypadku bardziej rozbudowanych skryptów, jakbyś chciał zmienić Arial na Verdana to musiałbyś poprawiać w dziesiątkach/setkach miejsc. Mając to w jakiejś stałej/zmiennej poprawiasz raz i masz po temacie

  2. fragment

Kopiuj
btnBlack.addEventListener('click' , function(){
  console.log('Zmieniono na czarny');
  text.style.color = 'black';
})

btnPink.addEventListener('click' , function(){
  console.log('Zmieniono na różowy');
  text.style.color = 'pink';
})

Masz tutaj w dwóch miejscach powtórzenie tego samego, tylko z innymi wartościami.
Analogicznie do pkt. 1: jeśli później będziesz chciał wprowadzić jakieś zmiany, to mając to tak rozbite, będziesz musiał poprawiać w każdym miejscu osobno. Bardziej sensowne wydaje się tutaj stworzenie jednej funkcji, którą wywołasz z odpowiednim parametrem - dla pierwszego przypadku byłoby to coś w stylu zmienTlo (black) a drugim zmienTlo (pink). W ten sposób możesz też w bardzo łatwy sposób dodać kolejne kolory.

Poczytaj sobie wątek https://4programmers.net/Forum/Off-Topic/Oceny_i_recenzje/312543-prosta_gra_w_js_code_review a w szczególności post https://4programmers.net/Forum/1501353


edytowany 1x, ostatnio: cerrato
AN
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 7 godzin
  • Postów:973
3

Możesz np. do przycisków dodać atrybut data z kolorem np. <button data-color="red">Czerwony</button> i na tej podstawie wystarczy, że podepniesz się pod klasę a nie nasłuchujesz każdy przycisk osobno.


Zdalna praca dla Senior Python Developerów --> PW
SushiTrash
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 lat
  • Postów:41
2

tak z nudow zrobilem cos podobnego, jak chcesz mozesz sobie rzucic okiem https://codepen.io/anon/pen/KxgJaQ

edytowany 1x, ostatnio: SushiTrash
Freja Draco
Freja Draco
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
1
anonimowy napisał(a):

Możesz np. do przycisków dodać atrybut data z kolorem np. <button data-color="red">Czerwony</button> i na tej podstawie wystarczy, że podepniesz się pod klasę a nie nasłuchujesz każdy przycisk osobno.

Wiem, że zwykłe onclick jest mniej elastyczne niż podpinanie akcji z zewnątrz, niemniej w takim prostym przypadku i skoro celem ma być zwięzłość, to czemu nie zrobić po prostu:

Kopiuj
<button onclick="zmien(0, 'red', 0);">Czerwony</button>
Kopiuj
function zmien {tlo, kolor, czcionka) {
...
}

?


AN
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 7 godzin
  • Postów:973
0
  1. Oddzielenie zachowania od znaczników

Celem znaczników HTML jest opisanie struktury dokumentu, a nie jego zachowania.

Wymusza powiązanie między niektórymi znacznikami i niektórym kodem JS, przez co nie pozwala na zamianę JavaScriptu bez zmiany znaczników. To jest ból głowy podczas utrzymania i zwiększa ryzyko błędów w produkcji.

  1. Jest trudne do utrzymania

Bariera do rozszerzania. Bardzo powszechną (codzienną właściwie) rzeczą jest dostarczanie dodatkowych funkcji do istniejącej aplikacji, ale ta konwencja może sprawić, że aplikacja będzie bardziej skomplikowana i kosztowniejsza.

Przechowywanie kodu HTML oddzielnie od kodu CSS, oddzielenie od kodu JavaScript jest bardziej przejrzyste, łatwiejsze i jest powszechnie uznawane za najlepszą praktykę.


Zdalna praca dla Senior Python Developerów --> PW
edytowany 1x, ostatnio: anonimowy
Freja Draco
Freja Draco
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
0
anonimowy napisał(a):
  1. Oddzielenie zachowania od znaczników
  2. Jest trudne do utrzymania

Dziękuję za odpowiedź. Faktycznie to ma sens w przypadku kodu, który będzie / ma szansę być elementem jakiegoś większego projektu, ale czasem robi się też jakieś maleństwa do jednego prostego celu.


AN
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 7 godzin
  • Postów:973
0

Tylko, że moim zdaniem ta porządniejsza wersja jest mimo wszystko czytelniejsza. I zawsze dobrze jest się trzymać dobrych praktyk.


Zdalna praca dla Senior Python Developerów --> PW

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.