> 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_actor(&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ů.