@Ksar, programując w C++ masz coś takiego:
Kod
SomeObject o;
SomeOtherObject.doSomeStuff().doSomeOtherStuff().doNextStuff();
Gubisz tutaj typ, nie masz informacji o tym, co zwraca doSomeStuff oraz doSomeOtherStuff().
Możesz to zamienić na:
Kod
SomeObject o;
SomeStuff some = o.doSomeStuff();
SomeStuff other = some.doSomeOtherStuff();
NextStuff next = other.doNextStuff();
W pierwszym nie wiesz, co zwracają funkcje, w drugim wiesz. W pierwszym nie przyjdzie Ci na myśl to, że dwie pierwsze funkcje zwracają ten sam typ, w drugim masz jasno wszystko.
Ofc. przykład podałem w C++, ponieważ łatwiej jest zauważyć różnicę. Podobnie to działa w JS, PHP, Java czy innych C#.
Zaraz mi powiesz, że czytelność jest dla Ciebie najważniejsza. I przez takie gadanie powstają bagniste spaghetti nie trzymające się żadnych zasad.
Co do robienia wielu rzeczy na raz - z tego co kojarzę jesteś młodym programistą, więc zapamiętaj raz na zawsze: każda funkcja którą napiszesz ma robić tylko jedną rzecz. Jeżeli używasz gdzieś fluent, to jest spore ryzyko tego, że funkcja używająca go nie robi jednej rzeczy na raz.