컨테이너의 get 접근 자 또는 나쁜 접근자를 통해 설정된 접근자를 통해 속성에 값을 할당하고 있습니까?
다음 코드를 고려하십시오.class Program
{
static void Main(string[] args)
{
Department deathStar = new Department { Name = "Death Star" };
Console.WriteLine("The manager of {0} is {1}.", deathStar.Name, deathStar.Manager.FullName);
deathStar.Manager.FirstName = "Lord";
Console.WriteLine("The manager of {0} is {1}.", deathStar.Name, deathStar.Manager.FullName);
Console.ReadLine();
}
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName
{
get
{
return this.FirstName + " " + this.LastName;
}
}
}
public class Department
{
public string Name { get; set; }
public Person Manager { get; private set; }
public Department()
{
this.Manager = new Person { FirstName = "Darth", LastName = "Vader" };
}
}
다음 출력을 생성합니다.
The manager of Death Star is Darth Vader. The manager of Death Star is Lord Vader.
Manager를 Person의 다른 인스턴스 또는 새 인스턴스로 변경할 수는 없지만 접근 자), 속성을 변경할 수 있습니다 (public set 접근자를 가짐).
그래서, 컨테이너의 get 접근 자나 나쁜 점을 통해 접근자를 통해 속성에 값을 할당하고 있습니까? 다른 말로하면, 이것은 코드 냄새입니까?
EDIT :
이것은 하나의 요점을 설명하기위한 샘플입니다. 이 샘플에만 개인 W 부서가 작성되었습니다.
부서 내 구성원 만 관리자를 변경할 수 있다면 ID는 현실을 모델링한다고 말할 수 있습니다. 매니저가 결코 바뀔 수 없다는 말은 아닙니다. 당신 (외부인)이 그것을 바꿀 수 없다는 것입니다. – Kekoa
우리는 비즈니스 규칙에 대해 아무것도 모르기 때문에, 우리는 정말로 그 측면에 대해서 논쟁 할 수 없습니다. 냄새를 맡을 필요가있는 냄새입니다. 또한 코드가 냄새를 맡으므로 그것이 잘못되었다는 것을 의미하는 것이 아니며 반드시 고쳐야한다는 의미는 아닙니다. 그것은 단지 (은유를 바꾸는) 깃발이 물결 치고 있음을 의미하며 그 부분을보아야합니다. 문제가있는 곳에서 완벽하게 맞을 수 있습니다. 주위를 냄새 맡고 확인하십시오. –