Elm:
Koodin refaktorointi

Kuinka:

Kuvittele, että sinulla on Elm-funktio, joka tekee liikaa, kuten sekoittaa käyttöliittymälogiikkaa tilan päivityksiin. Se on täydellinen kandidaatti refaktorointiin. Alun perin:

updateAndFormat : String -> Model -> (Model, Cmd Msg)
updateAndFormat input model =
    let
        updatedModel = { model | userInput = input }
    in
    if String.length input > 5 then
        ( updatedModel, Cmd.none )
    else
        ( model, Cmd.none )

Refaktoroinnin jälkeen erotamme huolenaiheet vetämällä logiikan eri funktioihin:

-- Päivityslogiikka on erillään
updateUserInput : String -> Model -> Model
updateUserInput input model = 
    { model | userInput = input }

-- Käyttäjäsyötteen muotoilu (näkymä) logiikka on myös erillään
formatUserInput : Model -> (Model, Cmd Msg)
formatUserInput model =
    if String.length model.userInput > 5 then
        ( model, Cmd.none )
    else
        ( { model | userInput = "" }, Cmd.none ) -- Tyhjennä syöte, jos se on liian lyhyt, esimerkkisääntönä.

-- Päivitysfunktio käyttää nyt apufunktioita
updateAndFormat : String -> Model -> (Model, Cmd Msg)
updateAndFormat input model =
    model
    |> updateUserInput input
    |> formatUserInput

Näillä muutoksilla sinulla on selvä erottelu, ja jokainen funktio on helpompi ymmärtää ja testata.

Syväsukellus

Refaktorointia muodollisena käytäntönä voidaan jäljittää ohjelmoinnin alkuaikoihin, jolloin koodin muuttamisen kustannuksia alettiin jo tunnistaa kehitysprosessin kriittisenä osana. Erityisesti Martin Fowlerin kirja “Refactoring: Improving the Design of Existing Code”, julkaistu 1990-luvun lopulla, todella asetti näyttämön refaktoroinnille rakenteellisella lähestymistavalla ja “koodihajujen” luettelolla tunnistaakseen refaktorointimahdollisuuksia.

Elmin kontekstissa refaktorointi hyödyntää kielen vahvuuksia, kuten sen vahvaa tyypitysjärjestelmää, joka edistää luottamusta prosessin aikana. Manuaalisen refaktoroinnin vaihtoehtoihin voi kuulua automaattisia koodimuunnostyökaluja, mutta Elmin työkalut tällä alueella ovat vielä kypsymässä verrattuna joitakin vanhempia kieliä. Toteutusyksityiskohdat keskittyvät usein yleisiin refaktorointeihin, kuten funktion erotteluun, uudelleennimeämiseen ja ehtolausekkeiden yksinkertaistamiseen. Elmin kääntäjä on tärkeä liittolainen refaktoroinnissa, sillä se ei anna tehdä paljoakaan virheitä – se huutaa aina, kun jokin on pielessä, varmistaen, että refaktoitu koodisi toimii edelleen.

Katso Myös