오늘 나는 누군가와 논쟁했다.
빈혈 도메인 모델이 아닌 리치 도메인 모델의 이점을 설명했습니다. 그리고 나는 간단한 수업으로 내 요점을 시연했습니다.
public class Employee
{
public Employee(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastname;
}
public string FirstName { get private set; }
public string LastName { get; private set;}
public int CountPaidDaysOffGranted { get; private set;}
public void AddPaidDaysOffGranted(int numberOfdays)
{
// Do stuff
}
}
그의 빈혈 모델 접근 방식을 변호하면서 그의 주장 중 하나는 "저는 SOLID 의 신자입니다 . 동일한 클래스에서 데이터를 표현하고 논리를 수행 할 때 단일 책임 원칙 (SRP)을 위반하고 있습니다."
이 주장에 따라 하나의 속성과 하나의 메소드를 가진 클래스가 SRP를 위반 하므로이 주장이 정말 놀랍습니다. 따라서 OOP는 일반적으로 SOLID가 아니며 함수형 프로그래밍 은 천국에 이르는 유일한 방법입니다.
나는 그의 많은 주장에 대답하지 않기로 결정했지만, 커뮤니티가이 질문에 대해 어떻게 생각하는지 궁금합니다.
내가 대답했다면 위에서 언급 한 역설을 지적하면서 시작한 다음 SRP가 고려하고 싶은 세분성 수준에 크게 의존하고 있으며, 너무 많이 가져 가면 클래스가 하나 이상 포함되어 있음을 나타냅니다. 속성 또는 하나의 방법으로 위반합니다.
뭐라고 했어?
업데이트 : 예제는 guntbert에 의해 관대하게 업데이트되어 방법을보다 현실적으로 만들고 기본 토론에 집중할 수 있도록 도와줍니다.