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の場合は常にビットごとに知識をスクラップします)。
ファイルをアップロードするのは誰ですか?ユーザーはすでに投稿したファイルを投稿に関連付けることができますか?投稿するには新しいファイル(分割されていない)ファイルを追加できますか?彼はこれを混ぜることができますか?それらは重要な質問です、再びあなたはそれについて考え、あなたのシステムを設計する必要があります。
この質問は流行語ビンゴのように聞こえます:) – ThiefMaster