• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[JS] Kalkulator bez "eval"

Konferencja JOIN! 2018
+3 głosów
286 wizyt
pytanie zadane 30 lipca 2017 w Nasze projekty przez Ziken Początkujący (360 p.)

Witam,

Niedawno skończyłem pisać kalkulator. Napisałem już go wcześniej ale kod był tragiczny więc postanowiłem zrobić code refactoring oraz dodałem kilka funkcji. Starałem aby kod był czytelny oraz poprawnie napisany (różnie to bywa). Proszę o ocenę aplikacji jak i kodu

Taktyczny link do gita

komentarz 30 lipca 2017 przez piotrek132 Obywatel (1,370 p.)
jak zmienie znak wyniku obliczeń, kasuje mi ten wynik
np 7+2 = 9 klikam +/- i kasuje
komentarz 30 lipca 2017 przez Ziken Początkujący (360 p.)

jak zmienie znak wyniku obliczeń, kasuje mi ten wynik

Nie kasuje wyniku, zapisuje go do następnych operacji. Zobacz nad input-em, on tam się pojawia.

komentarz 30 lipca 2017 przez Eryk Andrzejewski VIP (146,320 p.)

Przydałaby się możliwość obsługi przy pomocy klawiatury wink

1
komentarz 30 lipca 2017 przez Ziken Początkujący (360 p.)

Przydałaby się możliwość obsługi przy pomocy klawiatury

Jest smiley, tylko musi być focus na input albo na jakiś button 

1 odpowiedź

+1 głos
odpowiedź 31 lipca 2017 przez rafal612b Nałogowiec (37,350 p.)

Zawsze jest coś do poprawy chociaż kodzik jest spoczko (przynajmniej cześć którą widziałem ;D) Można dopisać JS DOCa dla każdej funkcji ;) 

Ale przed tym poszukaj co masz w komentarzach w większości przypadków komentarze są tam gdzie jest coś nie czytelnego ;)

NP https://github.com/Ziken/Calculator/blob/master/scripts/CalculatorInterface.js#L17-L22

Zamienił bym na 

    const OPERATIONS_SIGN = {
        multiplication: '*',
        division: '/', 
        addition: '+',
        subtraction: '-'
    };

A tu już mamy spory błąd. 

https://github.com/Ziken/Calculator/blob/master/script.js#L1-L4

Nigdzie nie używasz this dlatego nie jest to klasa i bez sensu jest późniejsze wywołanie z new 

https://github.com/Ziken/Calculator/blob/master/script.js#L433-L434

Początek zmień na taki kod :

"use strict";

var Calculator = function (element) {
    
    let self = this;
    self.element = element;

wtedy będzie działać obiektowość ;) Chociaż lepiej by było poczytać o prototypach i troszkę zmienić ten kod .

1
komentarz 31 lipca 2017 przez JSHolic Maniak (74,210 p.)
let self = this;

Jeśli już, to const lepiej pasuje.

W ogóle, dużą ilość let warto, w kodzie tej apki, zamienić na const.

komentarz 31 lipca 2017 przez rafal612b Nałogowiec (37,350 p.)
@Krzycho92 W sumie jeśli robimy już w ES6 to warto by dopisać klasy ;)
komentarz 31 lipca 2017 przez Ziken Początkujący (360 p.)
Ten kod z "self" to jest pierwsza wersja. Postanowiłem ją zmienić bo była nieczytelna. Zrobiłem drugą wersję która jest w folderze "scripts" którą podzieliłem na osobne moduły.

Podobne pytania

+4 głosów
3 odpowiedzi 407 wizyt
pytanie zadane 9 lipca 2017 w JavaScript, jQuery, AJAX przez Ziken Początkujący (360 p.)
+4 głosów
4 odpowiedzi 199 wizyt
pytanie zadane 25 czerwca w Nasze projekty przez Danrox Obywatel (1,980 p.)
0 głosów
5 odpowiedzi 314 wizyt
pytanie zadane 8 maja 2016 w Nasze projekty przez DragonCoder Stary wyjadacz (13,130 p.)
Porady nie od parady
Nie wiesz jak poprawnie zredagować pytanie lub pragniesz poznać którąś z funkcji forum? Odwiedź podstronę Pomoc (FAQ) dostępną w menu pod ikoną apteczki.FAQ

55,269 zapytań

99,579 odpowiedzi

204,902 komentarzy

27,240 pasjonatów

Przeglądających: 147
Pasjonatów: 3 Gości: 144

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...