19. Treat class design as type design
设计class犹如设计type
思考以下问题:
新type的对象应该如何被创建和销毁?
对象的初始化和对象的赋值该有什么样的差别?
新type的对象如果被passed by value,意味着什么?
什么是新type的“合法值”?
你的新type需要配合某个继承图系吗?
你的新type需要什么样的转换?
什么样的操作符和函数对此新type而言是合理的?
什么样的标准函数应该驳回?
谁该取用新type的成员?
什么是新type的“未声明接口”?
你的新type有多么一般化?
你真的需要一个新type吗?
请记住:
Class的设计就是type的设计。在定义一个新type之前,请确定你已经考虑过本条款覆盖的所有讨论主题。
19. Treat class design as type design相关推荐
- DataUml Design 教程6-DataUML Design 1.1版本号正式公布(支持PD数据模型)
从DataUML Design正式公布到如今有两个月了.因为近期比較忙,到如今才公布1.1版本号. 以后本人会一直坚持不断完好DataUML Design软件,希望广大程序员们多多支持. 一.1.1版 ...
- Matlab: Adaptive MPC Design, Time-Varying MPC Design, Nonlinear MPC Design
Matlab里的自适应mpc.(线性)时变MPC.非线性MPC有什么联系和区别? 看看帮助文档里Adaptive MPC Design: Adaptive MPC controllers adjust ...
- [Ant Design Vue]Ant Design Vue搭建项目
一.为什么要用Ant Design 1.因为它是蚂蚁金服产出的一套牛逼哄哄的产品 2. 丰富的组件化设计规范 和组件化编码规范 3.它适用于企业级的中后台搭建 二.快速创建项目 1.安装脚手架 npm ...
- Effective C++ 读书笔记之Part4.Design and Declarations
18. Make interfaces easy to use correctly and hard to use incorrrectly. 总结: 第一,好的接口很容易被正确使用,不容易被误用.你 ...
- Effective C++ 改善55个方法
美·Scott Meyers 候捷 电子工业 2011 刚才看到个会议时间有点晚,3.25论文都提交了 谷歌去广告的插件, 最后投了这个会议,刚刚好正合适.我说金钱与时间 ACCUSTOMING YO ...
- Effective C++读书笔记 摘自 pandawuwyj的专栏
Effective C++读书笔记(0) Start 声明式(Declaration):告诉编译器某个东西的名称和类型,但略去细节. std::size_t numDigits(i ...
- effective c++第四章(条款18-25)
第四章:设计与声明 设计与声明 条款18:让接口容易被正确使用,不易被使用(Make interfaces easy to use correctly and hard to use incorrec ...
- Effective C++改善程序与设计的55个具体做法笔记
Scott Meyers大师Effective三部曲:Effective C++.More Effective C++.Effective STL,这三本书出版已很多年,后来又出版了Effective ...
- 《Effective C++》》阅读笔记
第一章 Accustoming Yourself to C++ 1 View C++ as a federation of language (1). ...
- Paper:2020年3月30日何恺明团队最新算法RegNet—来自Facebook AI研究院《Designing Network Design Spaces》的翻译与解读
Paper:2020年3月30日何恺明团队最新算法RegNet-来自Facebook AI研究院<Designing Network Design Spaces>的翻译与解读 导读: 卧槽 ...
最新文章
- win+Ubuntu双系统重装win出现error:unknown filesystem grubrescuegt;
- 公积金联名卡——提取公积金用,用身份证即可办理
- 线程之线程共享成员变量的几种情况
- iis 7 php_Windows server 2008 下基于IIS7配置php7.2运行环境
- solr analyzer_查看您的Solr缓存大小:Eclipse Memory Analyzer
- 关于统计时间切片标签的一些sql
- Python Error: “ImportError: No module named six”,用自动安装解决依赖问题
- 促促促,如何确保系统扛得住 | 《尽在双11》抢鲜预览
- java pdf tiff_关于java:使用iText将tiff文件转换为pdf文件时出现异常
- scrum敏捷开发流程介绍和心得
- KVM虚拟化的概述和部署
- 最全最新的的Java核心知识点整理!!! 【推荐】
- 2022_WWW_Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning
- 远程桌面时,如何登录没有设置密码的系统
- Android音频焦点及混音策略
- python3收邮件_认真对待 Python3 收邮件
- 仅需一步,完美解决 0xc000007b 报错
- html css 奥运五环,用css写一个有趣的奥运五环~。
- Android仿京东、淘宝商品详情页上拉查看更多详情
- Java中 -1l1是多少?
热门文章
- 从零学React Native之11 TextInput
- 检查radio/checkbox是否至少选择一项
- C/C++中的static和extern关键字
- Android应用程序反编译
- 10.软件架构设计:大型网站技术架构与业务架构融合之道 --- 事务一致性
- 3.Jenkins 权威指南 --- 设置构建作业
- 18.输入和输出函数
- 计算机一级a河北,2009年河北省计算机一级考试A卷
- linux 查看libevent 安装目录,关于Linux下libevent库的基础安装和使用
- android finish 判断当前_Android开发,源码分析finish()和onBackPressed()的区别