【发布时间】:2015-04-24 06:03:37
【问题描述】:
假设我希望有 2 个函数,一个在给定范围内生成随机整数,另一个在给定范围内生成随机双精度。
int GetRandomNumber( int min, int max );
double GetRandomNumber( double min, double max );
请注意,方法名称是相同的。我正在尝试决定是否将这些函数命名为...
int GetRandomInteger( int min, int max );
double GetRandomDouble( double min, double max );
第一个选项的好处是用户不必担心他们正在呼叫哪个。他们可以用整数或双精度数调用 GetRandomNumber 并获得结果。
第二个选项在名称中更明确,但它向调用者透露了不需要的信息。
我知道这是小事,但我关心小事。
编辑:C++ 在隐式转换方面的表现如何。
例子:
GetRandomNumber( 1, 1 );
这可以为双重版本的 GetRandomNumber 函数隐式转换。显然我不希望这种情况发生。 C++会在double版本之前使用int版本吗?
【问题讨论】:
-
第二个选项揭示了哪些“不需要的信息”?
-
一件小事是您使用的是哪种编程语言?
-
+1 关心小事。
-
C++。 Doh,C++ 中甚至不允许重载返回类型。
-
C++ 允许您在更改参数类型时更改返回类型。
标签: ambiguity