Mi piace niether, personnaly.
Se qualcuno di essi restituisce un valore null, si ottiene un'eccezione nullpointer sulla linea ...
Ora ... quale di questi è andato storto?
Ora il metodo di concatenamento può essere ed è molto utile con alcuni schemi di utilizzo specifici. Dì ad esempio in un'interfaccia di tipo fluente (la maggior parte delle strutture di derisione lo farà, almeno quelle che ho visto).
Idealmente si dovrebbe cercare di ridurre l'accoppiamento e questo modello fa esattamente il contrario.
Dall'esperienza in cui mi trovo a dover scavare in profondità nella struttura degli oggetti per svolgere un'attività, di solito è un indicatore del fatto che la mia struttura di oggetti o la mia logica aziendale non sono corretti. Forse il lavoro potrebbe essere sepolto più in profondità attraverso una specie di oggetto / facciata / delegato del wrapper e chiamarlo invece. Forse la tua funzione o metodo sta facendo troppo e dovrebbero essere suddivisi in blocchi più piccoli e più specializzati. Forse l'oggetto ha bisogno di esporre le proprietà degli oggetti all'interno invece di esporre l'oggetto nel suo insieme. Tutto dipende dalla tua architettura e dai casi d'uso.
Detto questo, il software deve essere spedito e questo di solito significa che alcune parti saranno più hacker di altre, Idealmente queste dovrebbero essere ben isolate e incatenate e il concatenamento di metodi come questo tempo fatto attraverso assegnazioni variabili successive o direttamente tende a rompere questi confini che riducono la stabilità complessiva.