Если существуют геттеры и сеттеры, то должны использоваться всегда даже внутри класса. Конечно, если getter и setter делают что-то большее в методе, то необходимо учитывать, удовлетворяет ли он потребностям.
Следует использовать, а не средства должны быть использованы. Свойство может быть использовано напрямую (только внутри класса, если свойство является частным - и должно быть), но хорошей практикой является использование методов получения и установки.
Так что использование свойства напрямую возможно, но я рекомендую использовать get
и set
, потому что оно дает больше гибкости и может делать что-то большее, чем типичное назначение или получение.
Например, если в первую очередь сеттер только что-то устанавливает, но через некоторое время сеттер меняется, чтобы сделать что-то большее.
setName(name){
this.name=name;
}
То есть в коде setName("John");
равно name="John"
. Но представьте, что через некоторое время мы хотим установить другое свойство, когда установлено name
:
setName(name){
this.name=name;
this.nameIsSet=true;
}
другой пример (образец слушателя) :
setName(name){
this.name=name;
this.listener.nameChanged(this.name); //we call listener that variable changed
}
Тогда программисту нужно найти каждое задание, подобное name="John"
в классе, и изменить его на новое поведение. Если используется только setName
, изменение кода не требуется.
Конечно, все зависит от необходимости, и возможно, что установка, получение собственности извне делают что-то большее и другое, и это не полностью удовлетворяет наши потребности в классе.