C++接口类型怎么定义


本篇内容介绍了“C++接口类型怎么定义”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!类型是最简单、最好的文档。经过良好定义的类型可以提高易读性,也可以在编译时被检查。同时,类型明确定义的代码通常也会被优化得更好。Example, don’t(反面示例)Consider:(考虑以下代码)调用者无法确定函数可以接受何种类型和数据是否可能被修改(由于没有用const修饰)。注意所有的指针类型都可以隐式转换为void*,因此调用者很容易(随便)提供一个值。
被调用者必须(通过默契)将数据静态转换为未经验证的类型以便使用它。这样的代码易错且冗长。
只有在传递设计上C++无法描述的数据时才可以使用const void* 。否则考虑使用variant或者指向基础类型的指针作为代替手段。
可选项:模板参数经常可以消除void*而使用T*或者T&。对于一般的代码,这里的T可以是普遍的或者概念约束的模板参数。
译者注:concept是C++20已经决定引入的新概念。Example, bad(反面示例)Consider:考虑以下代码:调用者在描述一个矩形这一点是明确的,但却不知道具体描述的是那些方面(四角坐标还是边长)。同时,整形数据可以携带任意形式的信息,单位也 香港云主机存在很多可能,因此我们必须猜测四个整形参数的含义。前两个很有可能是x,y坐标对,但是,后两个呢?
注释和参数名称可以提供帮助,但是我们可以(通过参数类型)更加清晰地表达:
显然,我们无法通过静态类型系统捕捉所有错误(例如,认为第一个参数是左上角这个事实就是一种惯例(命名和注释))Example, bad(反面示例)Consider:(考虑以下代码)参数的类型和值没有说明哪种设定将会被修改,也没有说明值的含义。
Thisdesignismoreexplicit,safeandlegible:
下面的设计更清晰、安全和可读。For the case of a set of boolean values consider using a flags enum; a pattern that expresses a set of boolean values.
对于成组使用布尔值的情况,考虑使用枚举类型;下面的模式可以表示一套布尔值。In the following example, it is not clear from the interface what time_to_blink means: Seconds? Milliseconds?在下面的例子中,接口没有明确time_to_blink的含义:单位是秒还是毫秒?
std::chrono::duration类型(C++11)可以让时间间隔的单位更明确。
这个函数可以如下设计以便接受任何单位的时间间隔。
Enforcement(实施建议)(Simple) Report the use of void* as a parameter or return type.(简单)报告使用void*作为参数或返回值的情况。
(Simple) Report the use of more than one bool parameter.(简单)报告以多个布尔值为参数的情况。
(Hard to do well) Look for functions that use too many primitive type arguments.(很难做好)找到使用太多原始类型参数的函数。“C++接口类型怎么定义”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注开发云网站,小编将为大家输出更多高质量的实用文章!

相关推荐: 怎么用vb.net下载到完整的web页

这篇文章主要讲解了“怎么用vb.net下载到完整的web页”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用vb.net下载到完整的web页”吧!在网络上找了很多关于网页下载的程序但都不能完整地得到web页的…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 08/29 17:33
Next 08/29 17:33

相关推荐