c++ - 数字为 std::string 还是 double?

标签 c++ string parameters

<分区>

我正在为 http 客户端编写一个 C++ 库。我没有太多编程经验,所以请帮助我。

我有一个名为 add 的方法。它有两个参数。第一个是类型名称,第二个是参数 q。它是介于 0 和 1 <0,1> 之间的数字。它应该在点后有 0 到 4 位数字。

我可以写,但我不知道写什么更好:

  1. void add(std::string type, double q) -> 我必须在此方法的主体中将 q 转换为 std::string。

  2. void add(std::string type, std::string q) -> 没关系,它更快但对用户来说可能不太直观,因为它是一个数字(?)。 ...

有两种方法:1) 和 2) 是个好主意吗?

请帮帮我。我没有经验......我知道其中两种方法有效,但更好,更受欢迎。你怎么认为?你会怎么写这个?

最佳答案

通常,您只想通过查看方法签名来明确用户的期望。您的代码应该为使用它的人提供有用的点击(即让您的代码在做什么以及对他们的期望更加明显)。

让我们从最糟糕的开始:

void add(std::string type, std::string q)
  • 没有明确说明 q 应该是一个数字。
  • q 不是一个描述性很强的名称。

对于上面的示例,调用者可能会感到困惑并使用反向参数调用该方法:add("5.0123", "someType") 没有任何信息告诉用户他们做错了什么,直到必须使用参数。最糟糕的是,你不知道现在哪里会爆炸。这可能会导致一些非常难以追踪的错误,仅仅是因为没有强制执行正确的类型。

稍微好点:

void add(std::string type, double q)
  • 现在很明显,用户正在添加某种类型和 double 值。
  • q 仍然不是一个描述性的名字

我会推荐:

void add(std::string type, double value)
  • 现在很明显,用户正在添加某种类型和 double 值。
  • double 的参数名称现在是 value(比 q 更具描述性)。

现在用户不能调用参数乱序的方法,即 add(5.0123, "someType"),因为它会导致编译器错误。如果不是很明显:得到一个编译器错误要好得多,因为它可以立即修复。这样您就可以从头开始编写更安全的代码。

当然,这意味着您必须将 double 转换为 string,但大部分它是考虑到上述所有好处,只需付出很小的代价。

我不知道该值代表什么,但是您可以将参数命名为它代表的“真实世界”实体越接近,它就越好。

关于c++ - 数字为 std::string 还是 double?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13333635/

相关文章:

string - 逐行比较 BASH 中的两个文件

php - 如何在mysql中只选择整数

C++ 递归扫描字符串

c++ - 如何声明一个哈希函数以用于命名空间内的 unordered_set?

c++ - 如何在 C++11 中操作日期/日期时间?

针对字节码逆向工程的java常量

c++ - C++中的C代码不兼容参数错误

c# - 您可以在 Java 中通过引用传递吗?

java - 如何传递类的实例作为该类的方法的参数?

c# - 使用参数启动进程