Beneficios e inconvenientes del encadenamiento de métodos y la posibilidad de reemplazar todos los parámetros de retorno de vacío por el propio objeto

Estoy más interesado en Java, pero creo que es una pregunta general. Recientemente he estado trabajando con el framework Arquillian (ShrinkWrap) que utiliza muchos métodos de encadenamiento. Otro ejemplo de encadenamiento de métodos son métodos enStringBuilder, StringBuffer. Hay ventajas obvias de usar este enfoque: la verbosidad reducida es uno de ellos.

Ahora me preguntaba, ¿por qué no todos los métodos tienenvoid parámetro de retorno implementado como chainable? Debe haber algún inconveniente obvio y objetivo en el encadenamiento. Porque si todos los métodos son susceptibles de ser cambiados, todavía puedo elegir no usarlos.

No estoy pidiendo cambiar el código existente en Java, que podría romper algo en algún lugar, pero también sería bueno explicar por qué no se usó. Estoy más preguntando desde una perspectiva de diseño de framework futuro (escrito en Java).

He encontrado una pregunta similar, pero el autor de la pregunta en realidad se pregunta por qué se considera una buena práctica:Método de encadenamiento: ¿por qué es una buena práctica o no?

Si bien hay algunas respuestas disponibles, todavía no estoy seguro de cuáles son todos los beneficios e inconvenientes del encadenamiento y si se consideraría útil tener todos los métodos de vacío vaciables.

Respuestas a la pregunta(9)

Su respuesta a la pregunta