今天我参与了一个有关重构(#1)的讨论。
public void MyFunc(object myArgument)
{
if(myArgument == null)
throw new ArgumentNullException("myArgument");
....
使用这个 (#2)
//inside a shared assembly in a class called Guard
public static void AgainstArgumentNull(object obj, string message)
{
if (obj == null)
throw new ArgumentNullException(message);
}
public void MyFunc(object myArgument)
{
Guard.AgainstArgumentNull(myArgument, "myArgument");
....
我的直觉是#1更好,原因如下:
- #1比#2更简单,只需要基本的C#知识,而不需要Util库的知识。
- #1不会删除重命名传递给ArgumentNullException构造函数的字符串的resharper功能。
- #2将增加代码的依赖性(必须访问包含dll的dll)。
- #2的堆栈跟踪与#1不同。