一个小技巧助您减少if语句的状态判断
生活随笔
收集整理的這篇文章主要介紹了
一个小技巧助您减少if语句的状态判断
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在進行項目的開發的過程中, if 語句是少不了的,但我們始終要有一顆消滅 if / else 語句的心。為了消滅if / else 我們引入了 短路器 的概念。短路器 有時候的確能精簡我們的代碼,但還不夠,因此我參考了一個方法來繼續消滅一部分 斷路器 中的 if 語句。接下來就讓我們拿一段事例代碼來一步一步的演示下吧。
如下一段比較典型if 斷路器 代碼:
if (someConditionIsMet) {throw new SomeSpecificException("message"); } //someConditionMetCode這里代碼雖然沒什么問題,但是我個人還是不喜歡用 if 的語句聲明。我更喜歡的是:
Assert.That(someConditionIsMet, "message");但是這樣子的話我們就無法指定 Exception 的類型了,因此我們可能需要的是下面這樣子的:
Assert.That<MyException>(someConditionIsMet, "message");但是基類Exception雖然具有無參數的構造函數,但是在創建異常之后,不允許我再給 Message 進行賦值了。因為,Message是Exception 類中的只讀屬性。
public virtual string Message { get; }我的解決方案是使用Activator.CreateInstance并傳入要實例化的特定異常類型以及異常消息。如下代碼所示:
public static class Assert {public static void That<T>(bool condition, string msg) where T : Exception, new(){if (condition){var ex = Activator.CreateInstance(typeof(T), new object[] { msg }) as T;throw ex;}} }至此,結束。開頭的那段代碼就可以通過變通的方式把 if 語句給移除了,顯得代碼更精簡,你覺得呢?當然,如果你有更好的處理方式也可以留言告訴我。
參考自:https://www.codeproject.com/Tips/5289739/Assert-with-assertion
總結
以上是生活随笔為你收集整理的一个小技巧助您减少if语句的状态判断的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于 C# 的 ETL 大数据并行编程
- 下一篇: Swagger在header中添加tok