当指定和创建数字函数时,是否存在关于何时返回null以及何时当两者看起来都是有效输出时返回NaN的C#惯用指南。
导致这个问题的具体例子是我正在为Enumerable集合创建一个百分比扩展方法。如果有空输入,我一直在考虑要返回什么。该函数可以返回runningCount / totalCount,它将在零长度输入上返回NaN。但是,我不相信这与语言的一般感觉很吻合。
是否有任何指南或语言示例可以告知决定是否重新调用NaN或null。
答案 0 :(得分:2)
惯用C#代码在被要求做一些没有意义的事情时抛出异常。就像计算空输入的百分比一样。这应该是一个InvalidOperationException。
当客户端代码没有检查它时,返回像null或NaN这样的魔术值往往会导致更多麻烦。它不会,它也没有检查输入是否为空,所以它不会期望它们。对于它生成的非描述性NullReferenceException,Null是令人讨厌的,没有提示真正的问题可能是什么。 NaN因为不可察觉地传播而变得讨厌,将所有东西变成NaN并最终产生无意义的结果,你无法追溯到源头。
答案 1 :(得分:1)
您可能想了解可能使用扩展方法的方式。 NaN
是一个完全有效的double
值,因此可用于执行计算(嗯,结果总是NaN
,但至少你不会得到一个例外)。如果您的上下文要求在使用之前检查结果,那么您可能希望选择null
。
然而,安德烈已经评论过,对于一个空集合的百分比(如果没有项目尚未可能会导致0
可能是一个更合理的返回值。