Bash:
Refaktorering

Hvordan gjøre det:

La oss vurdere et enkelt Bash-skript som trenger litt omstrukturering. Det er klumpete, med gjentatt kode og vanskelig å følge:

#!/bin/bash
echo "Skriv inn et filnavn:"
read filename
if [ -f "$filename" ]; then
    echo "Filen eksisterer."
    count=$(grep -c "foo" "$filename")
    echo "Ordet foo vises $count ganger."
else
    echo "Filen eksisterer ikke."
fi

Omstrukturering for klarhet og gjenbrukbarhet kan innebære å introdusere funksjoner og håndtere feil mer nådig:

#!/bin/bash

function file_exists() {
    [[ -f "$1" ]]
}

function count_occurrences() {
    grep -c "$1" "$2"
}

function main() {
    local filename word count
    echo "Skriv inn et filnavn:"
    read -r filename
    echo "Skriv inn ordet du vil søke etter:"
    read -r word

    if file_exists "$filename"; then
        count=$(count_occurrences "$word" "$filename")
        echo "Ordet $word vises $count ganger."
    else
        echo "Filen eksisterer ikke." >&2
        exit 1
    fi
}

main "$@"

Den omstrukturerte versjonen bruker funksjoner for å forbedre lesbarhet og muliggjøre potensielt gjenbruk.

Dypdykk:

Omstrukturering er ikke et konsept som opprinnelig kom med Bash eller til og med høynivå programmeringsspråk; det er like gammelt som programmering selv. Begrepet ble formalisert i boken “Refactoring: Improving the Design of Existing Code” av Martin Fowler i 1999, med hovedfokus på objektorienterte språk.

I konteksten av Bash-skripting betyr ofte omstrukturering å bryte ned lange skript til funksjoner, redusere gjentakelse med løkker eller betingede uttrykk, og unngå vanlige fallgruver som å ikke håndtere mellomrom i filnavn. Alternativer til Bash for skript som har blitt for komplekse inkluderer Python eller Perl, som tilbyr bedre datastrukturer og feilhåndtering for komplekse oppgaver.

Bash-spesifikk omstrukturering handler mer om å følge beste praksis, som å sitere variabler, bruke [[ ]] for tester over [ ], og foretrekke printf over echo for robust utdata. Implementeringsdetaljer dreier ofte seg om å følge stilguider og bruke verktøy som shellcheck for statisk analyse for å fange opp vanlige feil.

Se også: