4

我有一个将对象转换为可为空的 int 的函数:

public int? ToInt(object x) { ... }

现在我需要另一个函数,如果无法进行转换,它将返回 0 而不是 null:

public int ToIntSomeOtherName(object x) { ... }

其他功能的好名字是什么?我知道这似乎微不足道,但我会在很多地方使用这些函数,一个好的命名约定将是一大优势。

4

6 回答 6

5

我认为ToInt你的第二种方法更好:

public int ToInt(object x) { ... }

您可以重命名第一个:

public int? ToIntOrNull(object x) { ... }
于 2012-07-25T23:13:53.323 回答
2

ToIntOrDefault 怎么样?

这是 IEnumerable 接口 (FirstOrDefault) 使用的约定。

于 2012-07-25T23:14:05.110 回答
0

方法的名称首先应该是您(以及您的公司或团队)可以识别和理解的名称。

然而,有时名称会变得笨拙。我强烈建议使用 XML 注释来提供有关您的方法的功能的正确文档:

/// <summary>
/// Converts an object to an int.
/// If conversion is not possible, a default int value of 0 is returned.
/// </summary>
/// <param name="x">Object to convert to int.</param>
public int ToInt_NotNull(object x) { ... }
于 2012-07-25T23:14:53.213 回答
0

也许ToZeroForNull可能是您方法的名称。

于 2012-07-25T23:15:19.163 回答
0

DefaultOrValue 怎么样,这将类似于 String.IsNullOrEmpty 的等效名称

public int DefaultOrValue(object x)
{ 
  int? intconverted = ToInt(x);
  return intconverted.HasValue ? intconverted.Value : 0;
}
于 2012-07-25T23:18:02.623 回答
0

相当随意,但是如果它需要是整数,我使用 ToInt,如果它可以为空,我使用 AsInt。这与语言对“as”关键字的使用相似。我还将这些方法作为“对象”的扩展方法,它消除了对类型和空值的任何预检查。我还建议 ToInt 利用 AsInt,这样您就不会在解析逻辑上加倍努力。

于 2012-07-25T23:24:14.343 回答