use*_*605 0 c++ string parameters
我正在为http客户端编写一个C++库.我对编程没有太多经验,所以请帮助我.
我有方法命名add.它有两个参数.第一个是类型名称,第二个是参数q.它是0到1 <0,1>之间的数字.点后应该有0到4位数.
我可以写它,但我不知道什么是更好的:
void add(std::string type, double q) - >我必须将q转换为此方法体中的std :: string.
void add(std::string type, std::string q) - >没关系,它更快但用户可能不太直观,因为它是一个数字(?)....
这是一个好主意,有两种方法:1)和2)?
请帮我.我没有经验......我知道这两种方法有效,但更好,更受欢迎.你怎么看?你会怎么写这个?
通常,您只需通过查看方法签名就可以清楚地了解用户的期望.您的代码应该为使用它的人提供有用的命中(即使您的代码正在做什么以及对它们的期望更加明显).
让我们从最糟糕的一个开始:
void add(std::string type, std::string q)
Run Code Online (Sandbox Code Playgroud)
q应该是一个数字.q 不是一个非常具有描述性的名称.通过上面的例子,调用者可能会感到困惑并使用反向参数调用该方法:add("5.0123", "someType")没有任何事情告诉用户他们做错了什么,直到必须使用参数.最糟糕的是,你现在还不知道事情会在哪里爆发.这可能导致一些非常难以追踪错误,因为没有强制执行正确的类型.
稍微好一些:
void add(std::string type, double q)
Run Code Online (Sandbox Code Playgroud)
q 仍然不是一个描述性的名称我建议:
void add(std::string type, double value)
Run Code Online (Sandbox Code Playgroud)
value(比描述更具描述性q).现在,用户无法使用参数乱序调用方法,即add(5.0123, "someType")因为它会导致编译器错误.如果不明显:获得编译器错误会更好,因为它可以立即修复.这样你就可以从头开始制作更安全的代码.
当然,这意味着您必须将其转换double为a string,但在大多数情况下,考虑到上述所有优势,这是一个很小的代价.
我不知道该值代表什么,但是您可以越接近地将参数命名为它所代表的"真实世界"实体,它就越好.
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |