日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用自定义卫语句写出更简洁的代码

發布時間:2023/12/4 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用自定义卫语句写出更简洁的代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

上次,我們介紹了Pitcher,可以幫我們簡化衛語句:

public?User(string?name,?int?age) {Throw.When(string.IsNullOrWhiteSpace(name),?new?ArgumentNullException(nameof(name)));Throw.When(age?<=?0,?new?ArgumentOutOfRangeException(nameof(age)));//正常業務邏輯this.Name?=?name;?this.Age?=?age;? }

但是,這樣的代碼還是不夠簡潔,因為我們更關注正常業務邏輯。

Ardalis.GuardClauses

今天,我們介紹另一個Nuget包Ardalis.GuardClauses來實現衛語句。

Ardalis.GuardClauses提供了Guard.Against對象,基本API如下:

  • Guard.Against.Null 判斷是否為null

  • Guard.Against.NullOrEmpty 判斷是否為null或空

  • Guard.Against.NullOrWhiteSpace 判斷是否為null或空或空格

  • Guard.Against.OutOfRange 判斷是否超出范圍

相對于Pitcher,它的優勢在于,每個衛語句都有返回值,前面的代碼可以改成這樣:

public?User(string?name,?int?age) {this.Name?=?Guard.Against.NullOrWhiteSpace(name,?nameof(name));this.Age?=?Guard.Against.OutOfRange(age,?nameof(age), 1, 100); }

自定義衛語句

除此之外,對于特殊條件的衛語句,我們可以使用Guard.Against對象編寫擴展方法,讓語義更清晰:

namespace?Ardalis.GuardClauses {public?static?class?UserGuard{public?static?int?InvalidAge(this?IGuardClause?guardClause,?int?age){var?validAges?=?new[]?{?1,?3,?5?};if?(!validAges.Contains(age))throw?new?Exception("年齡不符");return?age;}} }public?User(string?name,?int?age) {this.Name?=?Guard.Against.NullOrWhiteSpace(name,?nameof(name));this.Age?=?Guard.Against.InvalidAge(age); }

結論

使用Ardalis.GuardClauses,可以讓衛語句更簡潔易讀。

如果你覺得這篇文章對你有所啟發,請關注我的個人公眾號”My IO“

總結

以上是生活随笔為你收集整理的使用自定义卫语句写出更简洁的代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。