Возвращение значения из геттера должно зависеть от того, как вы хотите, чтобы ваш объект взаимодействовал с другими объектами в программе. Если вы вернете ссылку на объект из геттера, любые изменения, внесенные в этот объект через эту ссылку, будут отражены на самом объекте. Это может быть полезно, если вы хотите, чтобы изменения были видимы в разных частях вашей программы.
Однако, если вы хотите избежать нежелательного изменения самого объекта, возвращайте глубокую копию объекта из геттера. При этом будет создана новая копия объекта, не зависящая от оригинала, и любые изменения, внесенные в копию, не повлияют на оригинальный объект.
Чтобы определить, когда следует возвращать ссылку, а когда глубокую копию объекта в геттере, учитывайте, в каких случаях вы хотите, чтобы изменения в объекте были видимы в других частях программы, и когда вы хотите избежать нежелательных изменений.