


Oblicz sumę ze zniżką w JavaScript
W podanym kodzie jest kilka problemów, które można uznać za „niewłaściwe” lub nieoptymalne:
1. Brakująca instrukcja `return`: Funkcja `calculate_total()` nic nie zwraca, co oznacza, że domyślnie zwróci wartość `niezdefiniowaną`. Powinieneś dodać instrukcję „return” na końcu funkcji, aby określić, jaką wartość zwraca.
2. Nieużywane zmienne: Zmienna „rabat” ma przypisaną wartość, ale nigdy nie jest używana. Powinieneś usunąć nieużywany kod, aby uniknąć zamieszania i uczynić kod bardziej czytelnym.
3. Liczby magiczne: kod wykorzystuje zakodowane na stałe wartości, takie jak „10” i „50”, bez żadnych wyjaśnień ani dokumentacji. Lepiej byłoby używać nazwanych stałych lub zmiennych, aby uczynić kod bardziej czytelnym i łatwym w utrzymaniu.
4. Złożoność: kod zawiera wiele zagnieżdżonych instrukcji „if”, co może utrudniać zrozumienie i debugowanie. Można uprościć kod, konsolidując niektóre warunki w pojedynczą instrukcję „if” lub używając instrukcji „switch”. 5. Brak obsługi błędów: Kod nie obsługuje błędów w przypadku wprowadzenia przez użytkownika nieprawidłowej wartości procentu rabatu. Powinieneś dodać obsługę błędów, aby mieć pewność, że funkcja sprawnie poradzi sobie z nieoczekiwanymi danymi.
Oto zaktualizowana wersja kodu, która rozwiązuje te problemy:
```javascript
function valid_total(cena, rabat) {
const DISCOUNT_PERCENTAGE = 0,1; // zdefiniuj stałą dla procentu rabatu
if (rabat === niezdefiniowany || rabat < 0 || rabat > 100) {
rzucaj nowy błąd('Nieprawidłowa wartość rabatu');
}
const total = cena * (1 - (DISCOUNT_PERCENTAGE * rabat));
całkowity zwrot;
}
```



