Názor k článku
Minimalistický server pro Mastodon se jmenuje Snac2 a je napsaný v C od zivoslav - > Právě proto bych každý command řešil v...

  • Článek je starý, nové názory již nelze přidávat.
  • 19. 2. 2024 15:55

    zivoslav

    > Právě proto bych každý command řešil v separátní funkci.

    A odkud by jsi ty separátní funkce volal?

    Ve funkci `main` je sice spousta `if ...`, ale každá odpovídá více méně nějaké volbě příkazové řádky, takže `if` by tam zůstaly, jen by v tělě volaly další funkci a teprve v ní by bylo tělo kódu, který to zpracuje.

    Nějak mi uniká, co se tím vyřeší. Takhle je to nakonec přehlednější, protože i když to na první pohled nevypadá, oni se tam volají další funkce, tady třeba funkce `following_add`

    ```c
    if (strcmp(cmd, "follow") == 0) { /** **/
    xs *msg = msg_follow(&snac, url);

    if (msg != NULL) {
    char *actor = xs_dict_get(msg, "object");

    following_add(&snac, actor, msg);

    enqueue_output_by_ac­tor(&snac, msg, actor, 0);

    if (dbglevel) {
    xs_json_dump(msg, 4, stdout);
    }
    }

    return 0;
    }
    ```

    Takže jako jo, můžeš to ještě obalit jednou funkcí, ale proč?

    Druhá věc je to, a s tím souhlasím, že jazyk `C` je trochu neohrabaný (například místo několikanásobné `if` by byl hezčí nějaký `switch` a předávání parametru odkazem je taky zdrojem problémů.