c++API设计笔记(一)

/----------------------------
使用getter/setter惯用法与直接暴露成员变量相比的好处:
-----------------------------/
有效性验证
检验值的有效性,以确保该类的内部状态始终有效且一致
惰性求值
通过使用getter方法访问内部数据的值,可以仅在需要这种高消耗的计算时再执行
缓存
典型的优化技巧,将第一次读取的值缓存起来,并在以后需要时直接返回缓存的值
额外的计算
如果需要,可以在客户试图访问某个变量时执行一些附加操作
通知
其他模块可能需要知道类中的值何时发生了变化
调试
可以增加调试或日志语句,从而追踪变量何时被客户访问或改变
同步
如果API不是线程安全的,那么可以在getter/setter函数中增加互斥锁
更精细的访问控制
例如:不提供setter方法就可以使该值变为只读
维护不变式关系
针对内部数值彼此依赖时的情况
/-----------------------------
渐进公开(progressive disclosure)
-------------------------------/
API应该通过易用接口来呈现基本功能,同时将高级功能隐藏在一个独立的层次中.
这一概念经常出现在GUI设计中,即用一个"高级"或"专家"按钮来隐藏复杂功能.这样,可以即提供强大API,又能确保专家用例不会搅乱基本的工作流程
提示 : 基于最小化的核心API,以独立的模块或库的形式构建便捷API
/-----------------------------
API一致性
-------------------------------/
最容易使用的API是简化用户学习过程的API.
例如:大部分C++开发人员都熟悉STL以及容器类和迭代器的用法.因此,如果你决定编写具有相似目标的API,那么模仿STL的模式是十分有益的,因为开发人员将会发现他们很熟悉你的API用法,进而更容易采用你的API

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值