温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++中怎么使接口清晰明确

发布时间:2021-11-26 13:49:11 来源:亿速云 阅读:133 作者:iii 栏目:大数据

本篇内容介绍了“C++中怎么使接口清晰明确”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

I.1: Make interfaces explicit(使接口清晰明确)

Reason(原因)

Correctness. Assumptions not stated in an interface are easily overlooked and hard to test.

正确性。在接口中没有说明的假设很容易被忽视且难于测试。

Example, bad(反面示例)

通过全局(命名空间范围)变量(调用模式)控制函数行为的方式是隐晦且不易理解的,例如:

int round(double d){    return (round_up) ? ceil(d) : d;    // don't: "invisible" dependency}
It will not be obvious to a caller that the meaning of two calls o
f round(7.2) might give different results.
调用者不容易理解两次调用round(7.2)可能返回不同的结果。

Exception(例外)

有时我们通过环境变量控制一套操作的细节。例如,正常输出还是详细输出,也可能是调试还是优化。使用非局部控制的做法可能会难于理解,只可以应用在其他固定语义的实现细节的情况。

Example, bad(反面示例)

Reporting through non-local variables (e.g., errno) is easily ignored.

For example:

通过非局部变量报告(例如错误编码)很容易被忽略。例如:

// don't: no test of printf's return valuefprintf(connection, "logging: %d %d %d\n", x, y, s);

如果连接被关闭而导致没有日志输出怎么办?

Alternative: Throw an exception. An exception cannot be ignored.

可选项:抛出异常。异常不会被忽略。

另一种说法:避免会用非局部或隐含状态通过接口传递信息。注意非const成员通过对象状态函数向另外一个成员函数传递信息的情况。

另一种说法:接口应该是一个或一组函数。接口可以是模板函数,函数组可以是类和类模板。

Enforcement(实施建议)

  • (Simple) A function should not make control-flow decisions based on the values of variables declared at namespace scope.

    (简单)函数不应该根据命名空间范围中的变量决定控制流。

  • (Simple) A function should not write to variables declared at namespace scope.

    (简单)函数不应该改写定义于命名空间范围的变量。

“C++中怎么使接口清晰明确”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++
AI