假设我希望有 2 个函数,一个在给定范围内生成随机整数,另一个在给定范围内生成随机 double 数。
int GetRandomNumber( int min, int max );
double GetRandomNumber( double min, double max );
请注意,方法名称是相同的。我正在尝试决定是否将函数命名为...
int GetRandomInteger( int min, int max );
double GetRandomDouble( double min, double max );
第一个选项的好处是用户不必担心他们正在调用哪个。他们可以使用整数或 double 调用 GetRandomNumber 并获得结果。
第二个选项在名称中更加明确,但它向调用者显示了不需要的信息。
我知道这是小事,但我关心小事。
编辑:C++ 将如何处理隐式转换。
例子:
GetRandomNumber( 1, 1 );
这可以为双版本的 GetRandomNumber 函数隐式转换。显然,我不希望这种情况发生。 C++ 会在双版本之前使用 int 版本吗?
最佳答案
我更喜欢你的第二个例子,它是明确的,在解释上没有歧义。最好在方法名称中明确指出该成员的目的和功能。
您的方法的唯一缺点是您已将方法名称与返回类型耦合,这在您想要更改这些方法之一的返回类型的情况下并不理想。但是,在这种情况下,我最好添加一个新方法,并且无论如何都不要破坏 API 的兼容性。
关于函数重载的歧义 - 整数与 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1924719/