우리 데이터베이스에는 각 집계에 대한 리포지토리를 반환하는 데이터 공급자 클래스가 있습니다.새 개체를 반환하거나 생성자에서 멤버를 초기화 하시겠습니까?
의 시나리오 다음을 고려하자
public class DataProvider {
public IBookRepository Books { get { retun new BookRepository(); } }
public IAuthorRepository Authors { get { retun new AuthorRepository(); } }
}
당신이 볼 수 있듯이, 우리는 우리가 회원 호출 지정된 객체의 새로운 인스턴스마다 시간을 반환 : DataProvider.Books.DoBANANAS();
대
public class DataProvider {
public IBookRepository Books { get; }
public IAuthorRepository Authors { get; }
public DataProvider()
{
Books = new BookRepository();
Authors = new AuthorRepository();
}
}
`DataProvider.Books.BANANAS();를 호출 할 것인가? 더 적은 CPU/메모리가 필요합니까?
나는 방금 두 버전을 구현했는데 놀랍게도 효과가있었습니다.
하지만 내 경험에 의하면 그게 Version 1 Sucks입니다. 그러나 최종 제품을 완벽하게 최적화하고 구현할 수있는 충분한 시간을 가지고 있습니다. (연구 그룹에서 일하는 것이 이점입니다)
두 예제는 의미 상으로 동일하지 않습니다. 그것들은 메모리 사용량이나 속도면에서 약간의 차이 만있는 것이 아니라 매우 다른 행동을합니다. 나는 당신이 첫 번째 것이 무엇을 의도하지 않고있는 것 같아요. – dtb
두 버전 모두 다른 행동을합니다 (최소한 예제가 제공하는 수준에서). 아마도 다른 일을하는 두 가지 솔루션을 비교하는 것이 아닙니다. 성능 및 (실제 문제 인 경우에만) 고려해야 만 정확한 동작 및 의미를 먼저 결정해야합니다. –