使用空合并运算符重用的原子代码块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用空合并运算符重用的原子代码块相关的知识,希望对你有一定的参考价值。

A style of code reuse. Breaking methods (in this case MVC controller) into very small reusable atomic chunks that either perform an operation then return an ActionResult OR return null, then using with the null-coalescing operator.
  1. public ActionResult AddComment(CommentAddModel model)
  2. {
  3. return
  4. IfNotValidModelStateViewContent(model) ??
  5. IfNotKnownHumanViewCommentCaptcha(model) ??
  6. AddCommentThenViewReciept(model);
  7. }
  8.  
  9. private ActionResult IfNotValidModelStateViewContent(CommentAddModel model)
  10. {
  11. var contentItem = _repository.FindById<ContentItem>(model.Id);
  12. return !ModelState.IsValid ? View(contentItem, model) : null;
  13. }
  14.  
  15. private ActionResult IfNotKnownHumanViewCommentCaptcha(CommentAddModel model)
  16. {
  17. var sessionId = _httpContextProvider.Current.Session.SessionID;
  18. var isKnownHuman = _captchaService.IsKnownHuman(sessionId);
  19. return !isKnownHuman ? ViewCommentCaptcha(sessionId, model) : null;
  20. }
  21.  
  22. private ActionResult AddCommentThenViewReciept(CommentAddModel model)
  23. {
  24. var contentItem = _repository.FindById<ContentItem>(model.Id);
  25. _commentService.AddCommentToEntity(contentItem, model.Body, model.AuthorName, model.AuthorEmailAddress);
  26. _repository.Save(contentItem);
  27. return ViewCommentReceipt(contentItem.Url);
  28. }

以上是关于使用空合并运算符重用的原子代码块的主要内容,如果未能解决你的问题,请参考以下文章

合并具有完全相同代码的 catch 块? [复制]

Xcode 快速开发 代码块 快捷键

可能重载空合并运算符?

右侧的三元/空合并运算符和赋值表达式?

Android,从其他片段返回的空列表视图

C#语法糖空合并运算符??和空合并赋值运算符 ??=