따라서 단일 책임 원리 - 계급은 하나의 이유만으로 변경되어야하지만 어떻게 그 책임이 실제로 무엇인지를 효과적으로 판단해야합니다. 간단한 예 :S in SOLID - 어떻게/어디서 그 선을 그립니까?
public class UserManager
{
public void AddUser() { }
public void RemoveUser() { }
public void UpdateUser() { }
}
이 중 하나가 SRP를 손상시킬 수 있다고 주장 할 수 있습니다. 그래서 결국 두 사람을 위해 DI를 사용하고 결국 다음과 같이됩니다.
public class UserManager
{
private UserRemover _remover;
private UserUpdater _updater;
public UserManager(UserRemover remover, UserUpdated updater)
{
_remover = remover;
_updater = updater;
}
public void AddUser() { }
public void RemoveUser() { }
public void UpdateUser() { }
}
사용자 관리와 관련된 다른 방법이 있다면 어떻게 될까요? 그 길을 계속 가면 생성자에 추가 의존성을 계속 전달할 수 있을까요? 둘 이상의 public 메소드를 가진 클래스의 경우, SRP를 깨뜨린다 고 주장 할 수 있습니다. 상식을 사용하고 옵션 1과 함께 가나 순수 주의자가되어 옵션 2를 사용합니까?
이것은 의견을 바탕으로 작성되었습니다. 그러나 누군가가 당신에게 옵션 2가 더 좋다면 나는 충격을받을 것입니다. 극단적 인면에서 보잘것 없다. – StilesCrisis
답변은 의견을 기반으로하지 않습니다. 대답은 "SRP가 깨질 때까지 SRP를 깨지 못한다"입니다. 서로 다른 사용자를 다른 방식으로 제거하기 위해 사업 적 이유가있을 때까지 고유 한 "UserRemover"가 필요하지 않습니다. 따라서 비즈니스 요구 사항이 발생할 때까지 동일한 수업을 계속하십시오. 그런 다음에 만 리팩터링하여 새 함수를 삽입하십시오. (애자 일의 YAGNI 원칙을 기억하십시오.) –