`

Effective c++学习笔记条款18:让接口容易被正确使用,不易被误用

 
阅读更多
Make interfaces easy to use correctly and hard to use incorrectly
接口,顾名思义,供别人使用的一些方法。function 接口,class接口,template 接口。。。。每一种接口都是客户与你的代码互动的手段。但是你所设计的接口的好坏,直接导致了被调用产生错误的几率。所以:“容易被正确使用,不容易被误用”的接口的重要性。 下面以书中表现日期的class 设计。

当调用这个日期类的时候,我们不知道三个参数各个代表了什么,比如

这样的初始化,是完全错误的,因为没有14个月份。
所以我们要想办法杜绝这种现象的出现。
第一种方法就是导入简单的 wrapper types来区别天数,月份,和年。如

这个时候,当我们初始化时,

但是,因为一年只有十二个有效月份,所以,我们就预先定义好所有的月份。

当我们初始化时:
其他天数,和年份都可以这样。
预防客户出错调用就是利用限制类型表示什么可以做,什么不可以做。常见的就是const修饰。
避免无端与内置类型不兼容,真正的理由是为了提供行为一致的届接口。不一致性很容易导致接口的错误调用。
stl 容器届口十分的一致。每个容器都有名为size的成员函数,返回容器内有多少对象。但是java 就有length和size
很多方法。我之前做过一年的 java 深有体会。
在条款13中,我们学习到了factory函数,缠身一个对象的指针,方便我们对对象的管理,如
Investment* createInvestment();
在资源管理的那个章节,我们知道管理资源的重要性,我们要对指针删除,会出现
忘记删除,删除多次。
所以,我们使用了智能指针。让指针管理。std::tr1::shared_ptr<Investment.createInvestment();
shared_ptr的一个构造函数提供了技术功能,有如下代码:

请记住:
■ 好的接口很容易被正确使用,不容易被误用.你应该在你的所有接口中努力达成这些性质.
■ "促进正确使用"的办法包括接口的一致性,以及与内置类型的行为兼容.
■ "阻止误用"的办法包括建立新类型、限制类型上的操作、束缚对象值以及消除客户的资源管理责任.
■ tr1::shared_ptr支持定制型删除器.这可防范DLL问题,可被用来自动解除互斥锁等等.
分享到:
评论

相关推荐

    Effective C++ 中文版

    条款18:让接口容易被正确使用,不易被误用 条款19:设计class犹如设计type 条款20:宁以pass-by-reference-to-const替换Pass-by-value 条款21:必须返回对象时,别妄想返回其reference 条款22: 将成员变量声明...

    Effective C++学习笔记

    Effective C++学习笔记 没有时间看Effictive C++书的人可以看看这个笔记 总结出了重点啊 适合有c++基础的人阅读

    effective c++读书笔记

    effective c++读书笔记和总结 effective c++读书笔记和总结

    Effective Modern C++学习笔记

    《Effective Modern C++:改善C++11和C++14的42个具体做法(影印版)(英文版)》中包括以下主题:剖析花括号初始化、noexcept规范、完美转发、智能指针make函数的优缺点;讲解std∷move,std∷forward,rvalue引用和全局...

    Effective C++学习笔记.doc

    自己整理的侯捷版本&lt;&lt;Effective C++ 改善程序与设计的55个具体做法&gt;&gt; 学习笔记.

    Effective C++

    条款18:争取使类的接口完整并且最小 条款19:分清成员函数,非成员函数和友元函数 条款20:避免PUBLIC接口出现数据成员 条款21:尽可能使用CONST 条款22:尽量用传引用而不用传值 条款23:必须返回一个对象时不要试图返回...

    effective C++读书笔记

    effective C++读书笔记,effective C++读书笔记,effective C++读书笔记

    Effective C++(第三版)

    条款18:让接口容易被正确使用,不易被误用 make interfaces easy to use correctly and hard to use incorrectly. 条款19:设计class犹如设计type treat class design as type design. 条款20:宁以pass-by-...

    Effective Modern C++:改善C++11和C++14的42个具体做法(中文版 + 英文版)

    作者简介 作者:(美国)迈耶斯(Scott Meyers) 迈耶斯(Scott Meyers),二十多年来,Scott Meyers的Effective C++系列书籍(包括《Effective C++》《More Effective C++》和《Effective STL》)为C++编程语言...

    Effective.C++.中文第二版.50条款doc文档.chm

    条款18: 争取使类的接口完整并且最小 条款19: 分清成员函数,非成员函数和友元函数 条款20: 避免public接口出现数据成员 条款21: 尽可能使用const 条款22: 尽量用“传引用”而不用“传值” 条款23: 必须返回一个对象...

    effective C++ 读书笔记

    effective C++ 很好 很不错 最好的C++进阶资料

    Effective C++跟more Effective c++

    Effective C++跟more Effective c++

    effective C++ 读书笔记 PPT

    摘录了《Effective C++》 (Scott Meyers 著)中有参考价值的编写代码建议,方面阅读

    More Effective C++

    条款18:分期摊还预期的计算成本 093 Amortize the cost of expected computations 条款19:了解暂时对象的来源 098 Understand the origin of temporary objects 条款20:协助完成「返回值优化(RVO)」 101 ...

    Effective C++第三版及详细笔记

    内容简介:有人说C++程序员可以分为两类,读过Effective C++的和没读过的。当您读过《Effective C++:改善程序与设计的55个具体做法(第3版)(中文版)(双色)》之后,就获得了迅速提升自己C++功力的一个契机。

    effective c++和more effective c++

    电子版的effective c++ 和more effective c++ c++四书五经中介绍的经典书籍

    effective c++ & more effective c++ 纯文字版

    effective c++ & more effective c++ 纯文字版

    Effective C++ More effective C++ 中文版 .chm .rar

    中文版 chm Effective C++ More effective C++

Global site tag (gtag.js) - Google Analytics