동료들은 게터와 세터에 가능한 한 적은 논리가 있어야한다고 말합니다.
그러나 나는 게터와 세터에 많은 것들이 숨겨져 사용자 / 프로그래머를 구현 세부 사항으로부터 보호 할 수 있다고 확신합니다.
내가하는 일의 예 :
public List<Stuff> getStuff()
{
if (stuff == null || cacheInvalid())
{
stuff = getStuffFromDatabase();
}
return stuff;
}
일이 어떻게해야하는지에 대한 예 (Bob 아저씨의 '클린 코드'인용) :
public List<Stuff> getStuff()
{
return stuff;
}
public void loadStuff()
{
stuff = getStuffFromDatabase();
}
setter / getter에서 얼마나 많은 로직이 적절합니까? 데이터 숨기기 위반을 제외하고 빈 게터 및 세터를 사용하는 것은 무엇입니까?
public List<Stuff> getStuff() { return stuff; }
StuffGetter
인터페이스를 만들고 StuffComputer
계산을 수행하는 을 구현 한 다음 객체에 래핑 StuffCacher
하여 캐시에 액세스하거나 StuffComputer
랩으로 래핑 하는 호출을 전달합니다 .