NOTE : 1.好的接口容易被正确使用,不容易被误用.应该让所有接口努力达成这些性质. 2.“促进正确使用”的办法包括接口的一致性,以及内置类型的行为兼容. 3.“阻止误用”的办法包括建立新类型/限制类型上的操作,束缚对象值,以及消除客户的资源管理责任. 4.tr1::shared_ptr 支持定制型删除器(custom deleter).这可以防范DLL问题,可以被用来自动解除互斥锁(mutexs)等等.…
举一个容易犯错的例子 class Date { private: int month; int day; int year; public: Date(int month,int day,int year) { this->month = month; ... } } //wrong example Date date(,,);//should be 3,30 Date date(,,);//should be 3,30 使用类型可避免这个问题 class Month { ... }; clas…
1. 什么样的接口才是好的接口 C++中充斥着接口:函数接口,类接口,模板接口.每个接口都是客户同你的代码进行交互的一种方法.假设你正在面对的是一些“讲道理”的人员,这些客户尝试把工作做好,他们希望能够正确使用你的接口.在这种情况下,如果接口被误用,你的接口应该至少负一部分的责任.理想情况下,如果使用一个接口没有做到客户希望做到的,代码应该不能通过编译:如果代码通过了编译,那么它就能做到客户想要的. 2. 编写好的接口的方法列举 2.1 使接口不容易被误用——通过引入新的类型 开发出容易被正确使…
1. A good API will provide easy to use interfaces but also provide hard to miss-use interfaces. Usually the later one is more fundamental than that of the previous one. Consider you want to write a data class, there are thousands ways to write it. He…
问题聚焦:     从这个条款开始,我们把注意力转移到软件设计和声明上来,具体的说就是,C++接口的设计和声明.     所谓软件设计,就是以一般习惯的构想开始,演变成细节的实现,最终开发针对性的特殊接口.     接口的设计和声明的一个最基本的准则是:让接口容易被正确使用,不容易被误用.     引入新类型是预防接口被误用的常见手段之一. 欲开发一个好的接口,首先必须考虑客户可能做出什么样的错误. 来看下面这个例子 class Date { public: Date(int month, in…
好的接口容易被正确使用,不易被误用 考虑以下函数: void func(int year,int month,int day){ //一些操作 } 这个函数看似合理,因为参数的名字已经暴露了它的用途.但是如果只有寒暑签名呢?如下: void func(int,int,int); 就算我告诉你,此处需要日期作为参数,你可能会以月日年.日月年等不同形式作为参数. 正确的做法是把年月日都各自抽象为一个类(或者说是结构体): struct Year { int year; }; struct Month…
□第一节 什么是接口?什么是接口?百度百科的解释:两个不同系统(或子程序)交接并通过它彼此作用的部分.接口的概念贯穿于整个软件开发过程中,本文讨论的接口概念仅局限于以C++实现的class,function等. class接口 以OOP的思想,现实的问题总能抽象成一个个class,这些class包含哪些属性,方法其实就是class接口要考虑的问题.function接口 class接口的操作就是通过一个个function来实现的,function的参数传递,返回值是function接口要考虑的问题…
好的接口很容易被正确使用,不容易被误用.你应该在你IDE所有接口中努力达成这些性质. “促进正确使用”的办法包括接口的一致性,以及与内置类型的行为兼容. “阻止误用"的办法包括建立新类型.限制类型上的操作,束缚对象值,以及消除客户的资源管理责任. tri::shared_ptr支持定制型删除器(custom deleter).这可防范DLL问题,可被用来自动解除互斥锁(mutexes;见条款14)等等.…
test* create_test(); shared_ptr<test> create_test();//下面的接口比上面的接口要好 auto_ptr<test> create_test(); { shared_ptr<test> p(new test()); return p; }…
让接口easy被正确使用,不easy被误用 如题目,我们自己的程序接口是面向用户的,程序的目的不可是解决这个问题,并且要让用户easy使用.所以.必须保证我们的程序接口具有非常强的鲁棒性. 怎么保证接口的鲁棒性,不同情况有不同的处理结果,作者列出了以下几个样例所相应的方法. 1.设计一个class来表示日期 class Date{ public: void Date(int month, int day, int year); -- }; 以上的构造接口非常easy被用户用错 Date d(30…