Hjem » Siste artikler » Booleans i praksis: slik bruker du sannhetsverdier til å rydde opp i logikken din

Booleans i praksis: slik bruker du sannhetsverdier til å rydde opp i logikken din

Hovedillustrasjon
Hovedillustrasjon. Foto: Patrick Martin / Unsplash.

Booleans virker kjedelig sammenlignet med «ekte» ting som API-er, databaser og rammeverk. Likevel er sannhetsverdier ryggraden i nesten all logikk i et program.

I denne artikkelen ser vi praktisk på hva booleans er, hvorfor de ofte skaper forvirring, og hvordan du kan bruke dem til å gjøre prosjektene dine ryddigere, sikrere og enklere å feilsøke.

Hva er en boolean, egentlig?

En boolean er en verdi som bare kan være én av to ting: sann eller usann. I de fleste språk heter dettrueogfalse. Alt som handler om valg, filtrering og betinget kjøring bygger til slutt på dette.

Når du leser «er brukeren innlogget», «har vi nok saldo» eller «finnes filen», betyr det egentlig: vi forventer et svar som ja eller nei. Booleans modellerer det svaret eksplisitt.

Hvorfor booleans ofte gjør kode utydelig

Problemet oppstår ikke fordi booleans er kompliserte, men fordi vi pakker for mye logikk inn i dem. En variabel somokellerflagsier nesten ingenting om hva som faktisk er sant.

Det samme gjelder når en funksjon hetercheck()og returnerertrue. Sjekker den at brukeren har betalt, at skjemaet er gyldig eller at nettverket virker? Uten navn og kontekst blir alt fort uklart.

Gi booleans meningsfulle navn

En av de raskeste forbedringene du kan gjøre er å gi boolean-variabler og funksjoner navn som høres ut som et spørsmål som kan besvares med ja eller nei. For eksempel:

  • isLoggedIni stedet forstatus
  • hasPermissioni stedet forallowed
  • isEmptyCarti stedet forempty

Da blir også logikken lettere å lese:if (hasPermission) { … }leses naturlig i hodet ditt, og det blir enklere å se hva som faktisk skjer.

Unngå forvirrende negasjoner

Negasjon er en vanlig kilde til hodebry. Når du har navn somnotReady,noItemsellerisNotValid, ender du ofte opp med dobbel eller trippel negasjon.

To enkle tommelfingerregler hjelper mye:

  • Foretrekk positive navn:isValidi stedet forisNotValid.
  • Neger i logikken, ikke i navnet: bruk!isValidder du faktisk trenger det.

Hvis du merker at du skriver uttrykk somif (!hasNoErrors), er det et tydelig tegn på at du bør snu navnet rundt.

Typiske boolean-feller i hverdagskode

Selv enkle ting som «er denne verdien satt» kan være overraskende. Mange språk vurderer tall, tekst og andre typer som «sanne» eller «usanne» automatisk. Det kan gi utilsiktet logikk.

Noen klassiske situasjoner du bør være obs på:

  • Tallet 0 behandles ofte som usann.
  • Tom tekst regnes gjerne som usann, mens en tekst med mellomrom kan regnes som sann.
  • nullogundefinedkan ha spesiell behandling som avhenger av språket.

For å unngå overraskelser er det ofte tryggere å sammenligne eksplisitt, for eksempel sjekke om en tekst faktisk har lengde større enn 0, i stedet for å stole på «magisk» tolkning.

Booleans i formvalidering steg for steg

Tematisk illustrasjon
Tematisk illustrasjon. Foto: Kaleidico / Unsplash.

La oss si at du lager et registreringsskjema og vil kontrollere at e-post og passord er gyldige. I stedet for å samle alt i én stor betingelse, kan du bygge logikken i tydelige boolean-trinn.

En mulig tilnærming er:

  1. Lag små funksjoner som svarer ja eller nei på ett konkret spørsmål, for eksempelisValidEmailogisStrongPassword.
  2. Samle resultatene i meningsfulle booleans, for eksempelhasValidCredentials.
  3. Bruk disse i resten av programmet, for eksempel ved innsending eller feilmeldinger.

Fordelen er at du kan teste hvert steg for seg, og navnet forteller deg hva som er forventet uten at du trenger å tolke en lang betingelse.

Gjør kompleks logikk lesbar med mellomvariabler

Når logikken vokser, blir det fristende å putte alt inn i énif-sjekk. I stedet kan du bruke flere mellomliggende booleans som forklarer hvert delsteg i klartekst.

Tenk på dette som å skrive små kommentarer i selve programmet, bare at kommentarene faktisk kjøres og kan testes. Hvis en feil skjer, kan du logge hvilken del-boolean som var feil, og dermed spore problemet raskere.

Booleans som hjelpere for feilsøking

Under feilsøking kan det være nyttig å midlertidig innføre ekstra booleans som gjør det tydeligere hva systemet tror er sant. For eksempel kan du lagre resultatet av en sjekk i en variabel og logge den.

På den måten ser du om det er inputdata, selve sjekken eller videre logikk som feiler. Når ting fungerer igjen, kan du velge om du vil la dem stå for lesbarhet, eller fjerne dem for å rydde opp.

Når du bør vurdere noe mer enn kun booleans

Noen ganger prøver vi å presse for mye informasjon inn i én sannhetsverdi. Hvis du har en variabel som egentlig må forklare «ikke sjekket ennå», «godkjent» eller «avvist», er kanskje en enum eller streng et bedre valg.

Som tommelfingerregel: hvis du trenger mer enn ja eller nei, eller hvis du konstant må kombinere flere booleans for å forstå tilstanden, kan det være på tide å modellere dette som en mer detaljert struktur.

Oppsummering: tenk i spørsmål, ikke i flagg

Booleans er til for å svare på konkrete spørsmål. Når du navngir variabler og funksjoner deretter, og bryter komplisert logikk opp i små, testbare sannhetsverdier, blir hele prosjektet lettere å forstå.

Neste gang du ser en anonym variabel somokellerflag, kan du spørre: «hvilket spørsmål prøver vi egentlig å svare på her?» Svaret på det spørsmålet er ofte starten på mye ryddigere logikk.

0 kommentarer