条款18:让接口更容易的被使用,不易误用 接口设计主要是给应用接口的人使用的,他们可能不是接口的设计者,这样作为接口的设计者就要对接口的定义更加易懂,让使用者不宜发生误用,例如对于一个时间类: class Date{ public: Data(int month, int day, int year){ .... } }: 在应用Date类的时候,对于Date的三个参数我们很容易用错,因为它们的类型相同,我们可能会将实参20传给month等,我们在设定接口的时候要保证接口使用过程中不管怎么用都会…
条款18 : 让接口容易被正确使用,不易被误用 欲开发一个“容易被正确使用,不容易被误用”的接口,首先必须考虑客户可能做出什么样的错误操作.  1. 明智而审慎地导入新类型对预防“接口被误用”有神奇疗效.同时也就可以再新类型中对值进行限制.如下: struct Day { explicit Day(int d) :val(d) { } int val; }; struct Month { explicit Month(int m) :val(m) { } int val; }; struct Y…
章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(2)-读书笔记 <Effective C++>第3章 资源管理(1)-读书笔记 <Effective C++>第3章 资源管理(2)-读书笔记 <Effective C++>第4章 设计与声明(1)-读书笔记 <Eff…
章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(2)-读书笔记 <Effective C++>第3章 资源管理(1)-读书笔记 <Effective C++>第3章 资源管理(2)-读书笔记 <Effective C++>第4章 设计与声明(1)-读书笔记 <Eff…
第四章: 设计与声明 18. 让接口更容易被正确使用,不易被误用 将你的class的public接口设计的符合class所扮演的角色,必要时不仅对传参类型限制,还对传参的值域进一步限制. 19. 设计class犹如设计type 内置类型如int.float等,本质也是一个class,用户自定义的class的行为和状态应当与内置类型类似的.设计class时,首先要考虑构造和析构.然后是赋值操作如何实现.考虑class是否要继承某一已有class.尽量使你的class一般化等等需要考虑的问题. 20…
我根据自己的理解,对原文的精华部分进行了提炼,并在一些难以理解的地方加上了自己的"可能比较准确"的「翻译」. Chapter4 设计与声明 Designs and Declarations 条款18: 让接口容易被正确使用,不易被误用 欲开发一个"容易被使用,不容易被误用"的接口,首先必须考虑客户可能做出什么样的错误. 假设我们要设计一个表示日期的class: class Data{ public: Date(int month,int day,int year);…
[Effective Java] 创建和销毁对象篇 1. 优先考虑用静态工厂方法代替构造器 优点: - 静态工厂方法相比于构造器,它们有名称 - 不需要每次在使用的时候创建一个对象 - 可以返回原返回类型的任何子类型的对象 - 在创建参数化是来的时候,代码更加简洁 缺点: - 不能被子类化(因为鼓励程序使用复合,而不是继承) - 与其他的静态方法实际上没有任何区别(想要查明如何实例化一个类比较困难) 常用静态工厂方法名称: - valueOf(类型转换方法) - of - getInstance…
一.课程笔记 1.1  软件开发周期 (1)需求分析阶段 分析客户的业务和数据处理需求. (2)概要设计阶段 设计数据库的E-R模型图,确认需求信息的正确和完整. /* E-R图:实体-关系图(Entity Relationship Diagram),提供了表示实体类型.属性和联系的方法,用来描述现实世界的概念模型. 实体 一般认为,客观上可以相互区分的事物就是实体,实体可以是具体的人和物,也可以是抽象的概念与联系.关键在于一个实体能与另一个实体相区别,具有相同属性的实体具有相同的特征和性质.用…
条款18:让接口容易被正确使用,不易被误用 1,好的接口很容易被正确使用,不容易被误用.你应该在你的所有接口中努力达成这些性质. 2,“促进正使用”的办法包括接口的一致性,以及与内置类型的行为兼容. 3,“阻止误用”的办法包括建立新类型,限制类型上的操作,束缚对象值,以及消除客户的资源管理责任. 4,shared_ptr支持定制型删除器.这可以防范DLL问题,可以用来自动解除互斥锁. 条款19:设计class犹如设计type 博客地址:http://www.cnblogs.com/ronny/ …
条款18:让接口easy被正确使用,不易被误用 1,好的接口非常easy被正确使用,不easy被误用.你应该在你的全部接口中努力达成这些性质. 2,"促进正使用"的办法包含接口的一致性,以及与内置类型的行为兼容. 3,"阻止误用"的办法包含建立新类型,限制类型上的操作,束缚对象值,以及消除客户的资源管理责任. 4,shared_ptr支持定制型删除器.这能够防范DLL问题,能够用来自己主动解除相互排斥锁. 条款19:设计class宛如设计type 博客地址:http…