Skip to content

Don't use catch-all in main update - not a recommended way to code in Elm #81

@amilner42

Description

@amilner42

Very easy fix to make the code more elm-like (aka the compiler more helpful).

You currently do

( _, _ ) ->
            -- Disregard messages that arrived for the wrong page.
            ( model, Cmd.none )

When someone adds a new page though, it will fall into this case, which is clearly not what we want. We want the compiler to force us to add it. To achieve this, it's better to instead do:

( GotEditorMsg subMsg, Editor slug editor ) ->
    Editor.update subMsg editor
        |> updateWith (Editor slug) GotEditorMsg model

( GotEditorMsg _, _ ) ->
    (model, Cmd.none)

( GotArticleMsg subMsg, Article article ) ->
     Article.update subMsg article
        |> updateWith Article GotArticleMsg model

( GotArticleMsg _, _) ->
    (model, Cmd.none)

etc.

It is more verbose but definitely more elm-like. Now if someone adds GotXMsg the compiler will tell them that they are missing a case, go elm 😃 I think it's also valuable to set an example given this repo is used as a reference for how to code in Elm by many people new to Elm.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions