我有一堆看起来像这样的重复代码:
If mValue is Nothing Return ""
Return mValue.ToUpper
我定义了以下扩展方法来减少重复代码:
<System.Runtime.CompilerServices.Extension()>
Public Function EmptyIfNull(this As String) As String
If String.IsNullOrEmpty(this) Then Return ""
Return this
End Function
重复的代码可以重写为:
Return mValue.EmptyIfNull.ToUpper
这有不足之处吗?
答案 0 :(得分:2)
唯一的缺点是你实际上正在重新创建语言中的内容(空合并运算符,或者If function,因为它是在VB.NET中实现的)
Return If(mValue, "").ToUpper()
应该做你想要的。
至于您的扩展方法,您无需拨打String.IsNullOrEmpty
,因为您只需要处理Nothing
的情况。
答案 1 :(得分:1)
不,这样做没有任何缺点。该方法很简单,它涵盖了一个合法的用例,并且命名良好。
这里唯一需要考虑的是你实际使用它的方式:如果ArgumentNullException
是{{1},那么抛出mValue
(或更合适类型的其他例外)可能更合适 - 但这取决于调用者。
答案 2 :(得分:0)
很容易理解它的作用(这是最重要的事情)。
它还可以生成更清晰的代码。