读书笔记《Effective C++》条款18:让接口容易被正确使用,不易被误用
来源:互联网 发布:广州980数控编程视频 编辑:程序博客网 时间:2024/05/22 11:58
function接口,class接口,template接口......每一种接口都是客户与代码互动的手动。假设面对的是一群“讲道理的人”,那些客户企图把事情做好。它们想要正确使用你的接口。这种情况下如果他们对任何其中一个接口的用法不正确,你至少也得负一部分责任。理想上,如果客户企图使用某个接口而却没有获得他所预期的行为,这个代码不该通过编译;如果代码通过了编译,它的作为就该是客户所想要的。
欲开发一个“容易被正确使用,不容易被误用”的接口,首先必须考虑客户可能做出什么样的错误。
“除非有好理由,否则应该尽量令你的types的行为与内置types一致”。客户已经知道像int这样的type有些什么行为,所以你应该努力让你的types在合样合理的前提下也有相同表现。例如,如果a和b都是int,那么对a*b赋值并不合法,所以除非你有好的理由和此行为分道扬镳,否则应该让你的types也有相同的表现。是的,一旦怀疑,就拿int做范本!
避免无端与内置类型不兼容,真正的理由是为了提供行为一致的接口。很少有其他性质比得上“一致性”更能导致“接口容易被正确使用”,也很少有其他性质比得上“不一致性”更加剧接口的恶化。STL容器的接口十分一致(虽然不是完美的一致),这使它们非常容易被使用。例如每个STL容器都有一个名为size的成员函数,它会告诉调用者目前容器内有多少对象。
任何接口如果要求客户必须记得做某些事情,就是有着“不正确使用”的倾向,因为客户可能会忘记做那件事。
要点:
1.好的接口很容易被正确使用,不容易被误用。你应该在你的所有接口中努力达成这些性质。
2.“促使正确使用”的办法包括接口的一致性,以及与内置类型的行为兼容。
3.“阻止误用”的办法包括建立新类型、限制类型上的操作,束缚对象值,以及消除客户的资源管理责任。
4.shared_ptr支持定制型删除器(custom deleter)。这可防范DLL问题,可被用来自动解除互斥锁等等。
- 读书笔记《Effective C++》条款18:让接口容易被正确使用,不易被误用
- 《Effective C++》学习笔记条款18 让接口容易被正确使用,不易被误用
- Effective C++:条款18:让接口容易被正确使用,不易被误用
- Effective c++学习笔记条款18:让接口容易被正确使用,不易被误用
- Effective C++(18) 让接口更容易被正确使用,不易被误用
- 《Effective C++》18: 让接口容易被正确使用,不易被误用
- C++之让接口容易被正确使用,不易被误用(18)---《Effective C++》
- Effective C++——》条款18:让接口容易被正确使用,不容易被误用
- effective c++:让接口容易被正确使用,不易被误用
- 条款18: 让接口容易被正确使用,不易被误用
- 条款18:让接口容易被正确使用,不易被误用
- 条款18: 让接口容易被正确使用,不易被误用
- 条款18:让接口容易被正确使用,不易被误用
- 条款18:让接口容易被正确使用,不易被误用
- 条款18 让接口容易被正确使用,不易被误用
- 条款18 让接口容易被正确使用,不易被误用
- 条款18:让接口容易被正确使用,不易被误用
- Effective C++ 学记之18 让接口容易被正确使用,不易被误用。
- USACO
- 打造ViewPager的通用适配器CommonPagerAdapter
- 深入理解javascript原型和闭包(1)——一切都是对象
- Notification的基本用法
- bzoj1668
- 读书笔记《Effective C++》条款18:让接口容易被正确使用,不易被误用
- 重构—改善既有代码的设计
- ListView 图片丢失,错位
- 隐式动画与显式动画
- LeetCode 70 Climbing Stairs(记忆化搜索)
- 深入理解javascript原型和闭包(2)——函数和对象的关系
- Python实现最简单的双人聊天程序
- JavaScript之安全作用域的构造函数(高级函数)
- 一道有趣的啤酒趣味题