接受null的扩展方法的可接受名称

时间:2011-02-28 23:06:01

标签: c# .net

我真的不喜欢调用String.IsNullOrEmpty(str)。这使我需要首先考虑“String”类,然后在对象“str”上调用它。

我喜欢调用str.IsNullOrEmpty(),这不需要我想“String”类。

问题是扩展方法接受null实例来调用,这在调用普通方法时不常见。

我的问题您认为接受null的扩展方法的会话名称是什么?

  1. 对于字符串,这很容易,“IsNullOrEmpty()”(包含“IsNull”的任何内容)对我来说听起来不错。

  2. 对于其他人,比如GetDisplayName(),我们将其命名为“NullOrGetDisplayName”吗?

5 个答案:

答案 0 :(得分:2)

首先,你的想法是错误的,你应该调整它。想到在null对象上调用方法是不正确的;事实上,这就是为什么你想看看它是否为空的原因!

其次,方法意味着它在它拥有的参数中接受null。我不认为这里的命名约定是合适的。您可以通过Spec#来消除类中的null。

答案 1 :(得分:1)

NullSafeGetDisplayNameGetDisplayNameNullSafe怎么样,表明即使被调用的对象是null也可以安全地调用?

答案 2 :(得分:1)

对于可以查询“null”对象的方法,我会选择mystring.IsNullOrEmpty() - 显然检查字符串是否为空,只要你在整个代码库中与命名一致,就没有人会有任何理解/学习它意味着什么的麻烦。

对于将某些东西应用于对象并忽略空对象的方法,我使用“安全”,如SafeGetDisplayName()中所述 - 这是一个常用的长期标准(参见MFC中的GetSafeHandle())< / p>

答案 3 :(得分:1)

我只是不明白你的思维方式。写一些类似nullObject.IsNullOrWhatever()的东西根本没有任何意义。您可能喜欢或不喜欢静态表单,但您的解决方案对我来说确实是错误的。

答案 4 :(得分:0)

Nullable类有一个名为GetValueOrDefault的方法。相同的表单可用于某些扩展方法:GetDisplayNameOrDefault或更具体的GetDisplayNameOrNullGetDisplayNameOrEmpty