Это сама идея доступа, которую он читает, но не изменяет. Это полезное соглашение, потому что, если сделать это последовательно, он делает рассуждения о некотором коде, который вам не намного легче. Обычно вам не следует ожидать странных побочных эффектов от чего-то, что называется getX()
. Возможно, будет нормально выполнять какую-то ленивую инициализацию, но становится яснее, если такие «ленивые геттеры» называются getOrCreateX()
или похожи, чтобы дать пользователю подсказку о том, что первое использование может занять немного больше времени/задействовать некоторую дорогостоящую операцию.
Мутатор, который возвращает что-то, может быть полезен, но он поможет пользователям вашего класса, если вы назовете его так, чтобы дать подсказку о том, что он возвращает. Это код ошибки или предыдущее значение? Люди не ожидают возвратных значений от чего-то имени setX()
, поэтому они будут удивлены, увидев такую подпись, и должны посмотреть документацию вашего класса, чтобы узнать, что она делает.
Резюме: Всегда указывайте код, как если бы кто-то еще должен был взять ваш код в любой момент - не делайте ничего удивительного. Даже если вы никогда не передадите свой код кому-либо еще, ваше будущее будет благодарно вам за выбор имен, которые объясняют, что делает этот метод.
Примечание: Ваша реализация сеттера не очень полезно, так как она всегда возвращает новое значение, которое вы только что прошли в
Предположим, вы хотите получить текущее значение 'name', как ваше решение поможет вам? –
@FrankTby Вы можете (и должны) просто изменить свой вопрос, чтобы улучшить его. – Hulk
Бывают ситуации, когда мутант имеет смысл возвращать предыдущее значение (см., Например, метод [put на карте] (http://docs.oracle.com/javase/8/docs/api/java/util /HashMap.html#put-KV-)), но обычно вы также хотите получить доступ к значению без его модификации. – Hulk