Effective C++读书笔记(12)

本文探讨了设计易于正确使用且不易被误用的接口的原则。关键在于预防用户错误,如参数不匹配或值范围错误,并通过引入新类型及限制类型内的操作来实现。此外,还讨论了如何使用枚举和静态函数来限制值范围,以及如何通过一致性提高接口的易用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

条款18:让接口容易被正确使用,不易被误用

欲开发一个“容易被正确使用,不容易被误用”的接口,首先必须考虑客户可能做出什么样的错误。

1、许多用户会出现对接口所传实参不对应或者取值范围有问题的错误。这些错误可以因为导入新类型而获得预防,可以通过简单地外覆类型来区别参数类型。(用成熟且经过充分锻炼的classes并封装其内数据比简单使用structs好

对于限制取值范围常见有两种方法:1、利用enum来限制(但是enum不具备类型安全性,可以被拿来当作一个int使用);2、以静态函数替代对象,表现某个特定的值。

2、限制类型内什么事可做,什么事不可做。(常见的限制是const)尽量令自定义的类型的行为与内置类型的行为保持一致,提供行为一致的接口。

很少有其他性质比得上“一致性”更能导致“接口容易被正确使用,也很少有其他性质比得上”不一致性“更加剧接口的恶化。

3、任何接口如果要求客户必须记住某些事情就可能有错误的倾向。

将原始指针传给tr1::shared_ptr会比将其初始化为null再对它做一次赋值操作更合理。

tr1:;shared_ptr会自动使用它的每个指针专属的删除器,因此消除了”cross-DLL problem“(关于cross-DLL problem详见另一片博文)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值