Najlepsze praktyki dotyczące instrukcji warunkowych w JavaScript

Najlepsze praktyki dotyczące instrukcji warunkowych w JavaScript

Ten artykuł wyjaśnia najlepsze praktyki dotyczące instrukcji warunkowych w JavaScript.

YouTube Video

Najlepsze praktyki dotyczące instrukcji warunkowych w JavaScript

Instrukcje if są podstawową strukturą sterującą w programach JavaScript. Jednak wraz ze wzrostem złożoności kodu liczba instrukcji if może się zwiększać, co utrudnia czytelność kodu. Tym razem zagłębimy się w najlepsze praktyki projektowania instrukcji if w JavaScript, aby poprawić czytelność i łatwość utrzymania kodu.

Uprość kod za pomocą flag

Uprość warunki obejmujące wiele kryteriów za pomocą wartości logicznych.

Przykłady do unikania

1// Bad Example
2if (isUserLoggedIn && user.hasPaymentInfo && user.cartItems.length > 0) {
3    console.log('Proceed to checkout');
4}

Ulepszone przykłady

Używaj flag do wyjaśnienia warunków.

1// Good Example
2const canProceedToCheckout = isUserLoggedIn && user.hasPaymentInfo && user.cartItems.length > 0;
3
4if (canProceedToCheckout) {
5    console.log('Proceed to checkout');
6}

Zachowaj prostotę instrukcji warunkowych

Gdy wyrażenie warunkowe staje się złożone, czytelność kodu spada, dlatego konieczne jest utrzymanie prostych warunków.

Przykłady do unikania

1// Bad example
2if (user && user.isLoggedIn &&
3    user.permissions && user.permissions.includes('admin')) {
4    console.log('Welcome, admin!');
5}

Ulepszone przykłady

Rozdzielając warunek na zmienne o konkretnym znaczeniu, możesz wyjaśnić jego zamiar.

1// Good Example
2const isUserLoggedIn = user?.isLoggedIn;
3const hasAdminPermission = user?.permissions?.includes('admin');
4
5if (isUserLoggedIn && hasAdminPermission) {
6    console.log('Welcome, admin!');
7}

Wyjaśnij kolejność wykonywania operatorów logicznych

W instrukcjach if w JavaScript niezrozumienie kolejności wykonywania operatorów logicznych może prowadzić do niezamierzonego działania.

Przykłady do unikania

1// Bad example
2if (isAdmin && isActive || isPremium) {
3    // The precedence of `&&` is higher than `||`,
4    // so this expression is interpreted as
5    // ((isAdmin && isActive) || isPremium)
6    console.log("Access granted");
7} else {
8    console.log("Access denied");
9}

Ulepszone przykłady

Jeśli kolejność wykonywania operatorów jest niejasna, możesz odpowiednio użyć nawiasów, aby ją wyjaśnić.

1// Good Example
2if (isAdmin && (isActive || isPremium)) {
3    console.log("Access granted");
4} else {
5    console.log("Access denied");
6}

Wykorzystywanie oceny krótkiego spięcia

JavaScript obsługuje krótkie oceny warunkowe zarówno dla operatorów && (AND), jak i || (OR). Krótkie oceny warunkowe oznaczają, że gdy wynik warunku zostanie określony podczas oceny, pozostała część nie jest oceniana.

  • AND (&&): Jeśli lewa strona jest oceniana jako fałsz, prawa strona nie jest oceniana, a jej wartość jest zwracana.
  • OR (||): Jeśli lewa strona jest oceniana jako prawda, prawa strona nie jest oceniana, a jej wartość jest zwracana.

Przykłady do unikania

1// Bad Example
2if (user?.someComplexFunction() && user?.isLoggedIn) {
3    // ...
4}

Ulepszone przykłady

W tym kodzie funkcja user?.someComplexFunction() jest wywoływana nawet jeśli user?.isLoggedIn jest false.

Zrozumienie krótkich ocen warunkowych może pomóc uniknąć niepotrzebnych obliczeń i napisać wydajny kod.

1// Good Example
2if (user?.isLoggedIn && user?.someComplexFunction()) {
3    // ...
4}

Minimalizuj użycie instrukcji else

Instrukcje else mogą zwiększać obciążenie poznawcze podczas śledzenia kodu. Zamiast tego rozważ użycie wczesnych zwrotów (early returns).

Przykłady do unikania

1// Bad Example
2function getUserRole(user) {
3    if (!user) {
4        return 'Guest';
5    } else {
6        return user.role;
7    }
8}

Ulepszone przykłady

Wyjaśnij warunki za pomocą wczesnych zwrotów.

1// Good Example
2function getUserRole(user) {
3    if (!user) return 'Guest';
4    return user.role;
5}

Prawidłowe użycie operatora warunkowego (ternary operator)

Dla prostych warunków użycie operatora trójargumentowego może skrócić kod. Jednak unikaj zagnieżdżania lub skomplikowanej logiki.

Przykłady do unikania

1// Bad Example
2let message = user.isLoggedIn ? user.isAdmin ?
3                    'Welcome, admin!'
4                    : 'Welcome, user!'
5                    : 'Please log in.';

Ulepszone przykłady

Priorytetyzuj czytelność poprzez podział warunków.

1// Good Example
2if (!user.isLoggedIn) {
3    message = 'Please log in.';
4} else if (user.isAdmin) {
5    message = 'Welcome, admin!';
6} else {
7    message = 'Welcome, user!';
8}

Wykorzystywanie wartości domyślnych i oceny krótkiego spięcia

Używaj wartości domyślnych i oceny z krótkim obiegiem, aby zmniejszyć rozgałęzienia i uprościć kod.

Przykłady do unikania

1// Bad Example
2let displayName;
3if (user && user.name) {
4    displayName = user.name;
5} else {
6    displayName = 'Guest';
7}

Ulepszone przykłady

W tym przypadku użycie operatorów logicznych czyni kod bardziej zwięzłym.

1// Good Example
2displayName = user?.name || 'Guest';

Odpowiednio rozróżniaj, kiedy używać instrukcji switch

Gdy wymagane są liczne warunki, instrukcje switch mogą uczynić zamiary bardziej przejrzystymi.

Przykłady do unikania

 1// Bad Example
 2if (status === 'success') {
 3    console.log('Operation was successful.');
 4} else if (status === 'error') {
 5    console.error('There was an error.');
 6} else if (status === 'pending') {
 7    console.log('Operation is still pending.');
 8} else {
 9    console.log('Unknown status.');
10}

Ulepszone przykłady

Używanie instrukcji switch może pomóc w organizacji kodu.

 1// Good Example
 2switch (status) {
 3    case 'success':
 4        console.log('Operation was successful.');
 5        break;
 6    case 'error':
 7        console.error('There was an error.');
 8        break;
 9    case 'pending':
10        console.log('Operation is still pending.');
11        break;
12    default:
13        console.log('Unknown status.');
14}

Wykorzystywanie klauzul warunkowych z wczesnymi warunkami wyjścia

Blokada warunkowa to technika użycia instrukcji if, aby wcześniej zakończyć działanie funkcji.

Przykłady do unikania

1// Bad Example
2function processOrder(order) {
3    if (order && order.isValid) {
4        if (order.items && order.items.length > 0) {
5            // Continue processing
6        }
7    }
8}

Ulepszone przykłady

Używaj blokad warunkowych, aby zmniejszyć zagnieżdżenie.

1// Good Example
2function processOrder(order) {
3    if (!order?.isValid) return;
4    if (!order.items?.length) return;
5
6    // Continue processing
7}

Pisz komentarze, aby wyjaśnić zamiary

Dla skomplikowanych warunków lub krytycznych rozgałęzień dodawaj zwięzłe i jasne komentarze, aby przekazać zamiar kodu.

Przykłady do unikania

1// Bad Example
2if (stock > 10 && !isRestricted) {
3    console.log('Available for purchase.');
4}

Ulepszone przykłady

Dodawaj komentarze, aby uczynić zamiary jasnymi.

1// Good Example
2// The product must have at least 10 items in stock
3// and not be on the restricted list.
4if (stock > 10 && !isRestricted) {
5    console.log('Available for purchase.');
6}

Wnioski

Skuteczne używanie instrukcji if w JavaScript może znacznie poprawić czytelność i utrzymanie kodu.

Możesz śledzić ten artykuł, korzystając z Visual Studio Code na naszym kanale YouTube. Proszę również sprawdzić nasz kanał YouTube.

YouTube Video