Beste praksis for betingelsesuttalelser i JavaScript

Beste praksis for betingelsesuttalelser i JavaScript

Denne artikkelen forklarer beste praksis for betingelsesuttalelser i JavaScript.

YouTube Video

Beste praksis for betingelsesuttalelser i JavaScript

if-uttalelser er en grunnleggende kontrollstruktur i JavaScript-programmer. Imidlertid, når koden blir mer kompleks, kan antallet if-uttalelser øke, noe som gjør koden vanskeligere å lese. Denne gangen vil vi dykke ned i beste praksis for å utforme if-uttalelser riktig i JavaScript for å forbedre lesbarheten og vedlikeholdbarheten.

Forenkle koden ved hjelp av flagg.

Forenkle betingelser som involverer flere kriterier ved å bruke boolske verdier.

Eksempler å unngå

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

Forbedrede eksempler

Bruk flagg for å tydeliggjøre betingelser.

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

Hold betingelsesuttalelser enkle

Når et betinget uttrykk blir komplisert, reduseres kodelesbarheten, så det er nødvendig å holde betingelsen enkel.

Eksempler å unngå

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

Forbedrede eksempler

Ved å bryte ned betingelsen i variabler med spesifikke betydninger kan du tydeliggjøre hensikten.

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

Avklar rekkefølgen til logiske operatorer

I JavaScript if-setninger kan misforståelser av rekkefølgen til logiske operatorer føre til uventet oppførsel.

Eksempler å unngå

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}

Forbedrede eksempler

Når rekkefølgen til operatorer er uklar, kan du bruke parenteser på riktig måte for å avklare.

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

Bruke kortslutningsevaluering

JavaScript støtter kortslutningsevaluering for både && (OG) og || (ELLER) operatorene. Kortslutningsevaluering betyr at når resultatet av en betingelse bestemmes under evaluering, blir den gjenværende delen ikke evaluert.

  • OG (&&): Hvis venstre side evalueres som falsk, evalueres ikke høyre side, og dens verdi returneres.
  • ELLER (||): Hvis venstre side evalueres som sann, evalueres ikke høyre side, og dens verdi returneres.

Eksempler å unngå

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

Forbedrede eksempler

I denne koden kalles funksjonen user?.someComplexFunction() selv om user?.isLoggedIn er false.

Å forstå kortslutningsevaluering kan hjelpe deg å unngå unødvendige beregninger og skrive effektiv kode.

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

Minimer bruken av else-uttalelser

else-uttalelser kan øke den kognitive belastningen når du sporer koden. I stedet bør du vurdere å bruke tidlige returuttalelser.

Eksempler å unngå

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

Forbedrede eksempler

Tydeliggjør betingelser med tidlige returuttalelser.

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

Riktig bruk av den ternære operatoren

For enkle betingelser kan bruk av en ternær operatør forkorte koden din. Unngå imidlertid nesting eller kompleks logikk.

Eksempler å unngå

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

Forbedrede eksempler

Prioriter lesbarhet ved å dele opp betingelser.

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}

Bruke standardverdier og kortslutningsevaluering

Bruk standardverdier og kortslutningsevaluering for å redusere forgreninger og forenkle koden.

Eksempler å unngå

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

Forbedrede eksempler

I dette tilfellet gjør bruk av logiske operatorer det mer konsist.

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

Skill riktig mellom når du skal bruke switch-instruksjoner.

Når flere betingelser er nødvendige, kan switch-instruksjoner gjøre intensjonene tydeligere.

Eksempler å unngå

 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}

Forbedrede eksempler

Bruk av switch-instruksjoner kan bidra til å organisere kode.

 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}

Bruke vaktklausuler med tidlige avslutningsbetingelser

En vaktklause er en teknikk som bruker if-setninger for å avslutte en funksjon tidlig.

Eksempler å unngå

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}

Forbedrede eksempler

Bruk vaktklause for å redusere nesting.

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

Skriv kommentarer for å tydeliggjøre intensjoner.

For komplekse betingelser eller kritiske grener, legg til kortfattede og tydelige kommentarer for å formidle kodens hensikt.

Eksempler å unngå

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

Forbedrede eksempler

Legg til kommentarer for å tydeliggjøre intensjoner.

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}

Konklusjon

Effektiv bruk av JavaScripts if-setninger kan i stor grad forbedre kodens lesbarhet og vedlikeholdbarhet.

Du kan følge med på artikkelen ovenfor ved å bruke Visual Studio Code på vår YouTube-kanal. Vennligst sjekk ut YouTube-kanalen.

YouTube Video