如何命名一个接受空值的函数C#?

时间:2016-11-01 22:39:30

标签: c# .net function

我需要创建一个接受null作为参数的函数,并安全地返回null而没有异常。

MyObject CreateMyObject(string objectName)
{
   if(objectName == null)
       return null;

   // create and return object otherwise 
}

在程序周围有数千个函数调用,在调用CreateMyObject之前检查空值会增加代码量和开发时间。在程序的后续阶段安全地忽略此函数返回的空值。

这种功能的适当名称是什么,因此调用者的功能显而易见?

1 个答案:

答案 0 :(得分:4)

LINQ扩展方法,如果没有匹配则不会抛出异常,并附加OrDefault

因此,您也可以遵循此约定并将方法标识符更改为CreateMyObjectOrDefault

或者,实际上,作为@RB。在对此答案的一些评论中建议,因为MyObject是引用类型,您只需将方法称为CreateMyObjectOrNull

建议

为什么不将此方法转换为扩展方法:

public static class ObjectExtensions
{
     public static MyObject CreateMyObject(this string name)
     {
           Contract.Requires(!string.IsNullOrEmpty(name));

           // create and return object otherwise 
     }
}

...当你打电话时,你会使用新的闪亮的null-conditional operator吗?

string text = "whatever";

// This is equivalent to your approach and you're using regular C#
// syntax and you don't need to re-invent the wheel ;)
MyObject myObject = text?.CreateMyObject();

另外,请详细了解code contracts以了解Contract.Requires发生了什么。