这样设计API,让接口更加健壮!

本文探讨了在设计API时遇到的问题,当接口参数复杂且使用结构体时,不同版本的库可能导致非法访问。为解决这个问题,提出了使用setter和getter方法而不是直接暴露成员,以此提高接口的健壮性,防止因库版本不一致引发的程序崩溃。通过这种方式,即使增加新字段,也不会导致程序崩溃,而是返回默认值。示例代码和相关技术文章可在原文链接中查看。
摘要由CSDN通过智能技术生成

原文链接:https://www.yanbinghu.com/2020/11/07/61329.html

之前在《PIMPL-隐藏类的私有成员》中介绍了一种隐藏类的私有成员的方法,或者说隐藏接口实现细节的方法-PIMPL。
假设提供的接口的入参比较复杂,可能有人会考虑使用结构体作为入参。当你考虑这么做的时候,灾难也将会随之而来……

示例:

// 来源:公众号【编程珠玑】
// 作者:守望先生
// api.h
#include<iostream>
struct Param{
    int num;
    std::string str;
};
void TestFun(const Param &param);

// api.cc
#include "api.h"
void TestFun(const Param &param){
    std::cout<<"num:"<<param.num<<" str:"<<param.str.c_str()<<std::endl;
}

假设提供TestFun作为一个对外接口,我们编译并制作为静态库:

$ g++ -c api.cc -I./
$ ar -rcs libapi.a api.o 

关于静态库的制作,请参考《Linux下如何制作静态库?》。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值