TDD 대신 DDD를 사용한다고 생각합니다. TDD의 컨텍스트에서 의미가 거의 없기 때문입니다.
시스템에 파일이 무슨 의미인지 생각하고 파일과 게시물을 연결하는 규칙이 있습니까? 예를 들어 파일을 가지고 있어야하는 게시물을 삭제한다면? 우리도 그들을 삭제합니까? 동일한 파일을 여러 게시물에 "추가"할 수 있습니까? 당신은 앉아서, 생각하고, 당신에 관한 지식을 수집합니다, 그러면 당신은 당신이 도메인에 소개 될 장소가 될 자격이 있는지 결정합니다.
일부 샘플 도메인 내가 상상할 수 :
public class Post
{
private List<File> _files;
public IEnumerable<File> AssociatedFiles {get {return _files;}}
public void AssociateFile(File file){//...}
public void DisassociateFile(File file){//...}
//It doesn't delete it just do some logic. Maybe we can't delete this post and need to throw exception or whatever logic you need
public void Delete()
{
foreach (File file in AssociatedFiles) DisassociateFile(file);
}
}
public class File
{
public String Url;
public DateTime Created;
public DateTime Modified;
}
public class PostRepository
{
public void Delete(Post post)
{
post.Delete();
DbContext<Post>.Delete(post); //I Don't remember EF syntax for this
DbContext.SaveChanges();
}
}
업데이트 : 계속하자 ... 내가 descovered 당신이 도메인에 생각의 5 분 후
을 내 초기 설계가 중요한 개념이 골대를 벗어났습니다 것을 (DDD로 항상 지식을 비트별로 긁어 낸다).
파일 업로드는 누가 담당합니까? 사용자가 이미 Post에 업로드 한 파일을 연결할 수 있습니까? 게시 할 파일 (분할되지 않은) 파일을 새로 추가 할 수 있습니까? 그는이 것들을 혼합 할 수 있습니까? 그것들은 중요한 질문이며, 다시 그것에 대해 생각하고 시스템을 설계해야합니다.
그 질문은 유행어 빙고처럼 들립니다 :) – ThiefMaster