深入C++中API的问题详解

 更新时间:2013年05月16日 15:30:03   作者:  
本篇文章是对C++中API的问题进行了详细的分析介绍,需要的朋友参考下
前言:本文书写的格式与其它不相同。本文题目说是关于C++ API的思考,其实也不仅仅是C++,对于其它语言同样适用。

API实际是指Application Programming Interface,应用程序编程接口。对API是一套用来控制Windows的各个部件的外观和行为的一套预先定义的Windows函数。在C++中我认为:一个API就是一堆类以及类中方法和字段的集合。
并不是所有的签名都是API的一部分,未公开的部分(private)内容不是API,它不对外承诺兼容性。API广泛定义:凡是有利于在“无绪”的状态下把一个大的系统以组件集成的方法拼装出来的东西都属于API

为什么要开发API?
我们希望将大块的构建模块“无绪”地集合成应用程序,一些构建模块包含共享库、框架、预先定义好的程序架构,以及这些内容的组合。

如何检查API的质量?
1、可理解性
2、一致性
3、可见性
4、简单的任务应该有简单的方案
5、保护投资

API设计技巧一:
不要把类中的字段直接对外公布,而应该放置在内部。最好让外部用户只能通过set、Get方法来访问字段,千万不要将字段直接公布出来。

使用方法访问字段要好于直接访问字段。如果你在编写API的时候遵守这一建议,那么可以在这个API的下一个版本中对方法的具体实现进行很多改动,如添加数据的验证和校验、覆盖一个方法等,还可以做一些大的变化。如果直接使用指端就不能做上述改动。

API设计技巧二:
使用工厂方法而不是直接使用构造函数来创建一个对象。

使用工厂方法创建对象的好处:
1、工厂方法的返回值并不一定是声明类型的实例,它可以是它子类的实例。使用工厂方法可以更好的体现面向对象语言中多态的优势,代码也会显得更加简洁。
2、每次返回的对象并不一定都是新创建的对象,完全可以将其缓存。相比之下,每次调用构造函数都会创建一个实例,而一个工厂方法可以缓存以前创建的对象,并重用他们,从而节省了内存。
3、对同步控制,在工厂方法中可以将创建对象前后的相应代码进行统一处理。构造函数对这一种情况就无能为力。

API设计技巧三:
让所有的内容不可改,如果不考虑让其拥有子类,就应该让这个类不能被继承。
强烈推荐:不公开构造函数,转而提供工厂方法
 
API设计技巧四:
避免滥用set方法,在不部分情况下set方法是多余的。
建议:小心API中的每一个不必要的set方法

API设计技巧五:
尽可能通过友元的方式来公开功能。为了让用户更加简单明了地使用好你的API,就不要再你的API中公开太多的方法,不要给用户犯错的机会。

API设计技巧六:
避免暴露深层次继承。一旦发现继承体系超过两层时,一定要打住,并多多思考一下,要弄清楚:“我到底设计API还是在复用代码?”如果答案是后者,那么重新审视,并严格设计这个API,或者做好子类化的准备。

相关文章

  • Matlab绘制有趣的罗盘时钟的示例代码

    Matlab绘制有趣的罗盘时钟的示例代码

    这篇文章主要介绍了如何利用Matlab实现绘制有趣的罗盘时钟,文中的示例代码讲解详细,对我们学习Matlab有一定的帮助,需要的可以参考一下
    2023-01-01
  • 将正小数转化为2-9进制小数的实现方法

    将正小数转化为2-9进制小数的实现方法

    本篇文章对正小数转化为2-9进制小数的实现方法进行了介绍,需要的朋友参考下
    2013-05-05
  • Qt网络编程实现TCP通信

    Qt网络编程实现TCP通信

    这篇文章主要为大家详细介绍了Qt网络编程实现TCP通信,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • C语言实现循环队列基本操作

    C语言实现循环队列基本操作

    这篇文章主要为大家详细介绍了C语言实现循环队列基本操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 一篇文章详解Qt中如何访问数据库

    一篇文章详解Qt中如何访问数据库

    Qt是一个广泛使用的跨平台应用程序框架,它提供了许多功能,包括数据库访问,这篇文章主要给大家介绍了关于Qt中如何访问数据库的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • C++对象内存分布详解(包括字节对齐和虚函数表)

    C++对象内存分布详解(包括字节对齐和虚函数表)

    下面小编就为大家带来一篇C++对象内存分布详解(包括字节对齐和虚函数表)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • C++学习笔记之类成员指针

    C++学习笔记之类成员指针

    类成员指针时指可以指向类的非静态成员的指针,下面这篇文章主要给大家介绍了关于C++类成员指针的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • C/C++ 左移<<, 右移>>的作用及说明

    C/C++ 左移<<, 右移>>的作用及说明

    这篇文章主要介绍了C/C++ 左移<<, 右移>>的作用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • c++代码各种注释示例详解

    c++代码各种注释示例详解

    大家好,本篇文章主要讲的是c++代码各种注释示例详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • C语言实现简易通讯录

    C语言实现简易通讯录

    这篇文章主要为大家详细介绍了C语言实现简易通讯录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12

最新评论