2

考慮下面的代碼:拋出異常或引發域事件?

public class Article : AbstractEntity<Article> {  

    // ... 

    public void AppendFeedback(Feedback feedback) { 
     var quota = this.FeedbacksQuota ?? this.DefaultFeedbacksQuota;    
     if(this.Feedbacks.Count >= quota) { 
      throw new ApplicationException("message"); 
     } 
     this.Feedbacks.Add(feedback); 
    } 

    // ... 
} 

所以我不知道我怎麼會通知用戶,當配額被超過。拋出異常對我來說似乎很糟糕。是否適合使用domain events? (例如,讚賞,特別是在ASP.NET MVC application的情況下)。

我應該在哪裏收集/處理消息?

謝謝!

回答

1

如果您的反饋配額是一個不變量(業務規則),那麼異常是好的。

您可以隨時添加的方法,如:

public bool CanAddFeedback 
{ 
    get { return this.Feedbacks.Count < quota; } 
} 

要檢查添加,這樣就可以返回一個有意義/用戶友好的消息之前反饋是否允許。

反饋可以提出一個域事件添加包含離開配額等

+0

好吧!感謝您的雙方建議! – lexeme