设计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相关推荐

  1. DataUml Design 教程6-DataUML Design 1.1版本号正式公布(支持PD数据模型)

    从DataUML Design正式公布到如今有两个月了.因为近期比較忙,到如今才公布1.1版本号. 以后本人会一直坚持不断完好DataUML Design软件,希望广大程序员们多多支持. 一.1.1版 ...

  2. Matlab: Adaptive MPC Design, Time-Varying MPC Design, Nonlinear MPC Design

    Matlab里的自适应mpc.(线性)时变MPC.非线性MPC有什么联系和区别? 看看帮助文档里Adaptive MPC Design: Adaptive MPC controllers adjust ...

  3. [Ant Design Vue]Ant Design Vue搭建项目

    一.为什么要用Ant Design 1.因为它是蚂蚁金服产出的一套牛逼哄哄的产品 2. 丰富的组件化设计规范 和组件化编码规范 3.它适用于企业级的中后台搭建 二.快速创建项目 1.安装脚手架 npm ...

  4. Effective C++ 读书笔记之Part4.Design and Declarations

    18. Make interfaces easy to use correctly and hard to use incorrrectly. 总结: 第一,好的接口很容易被正确使用,不容易被误用.你 ...

  5. Effective C++ 改善55个方法

    美·Scott Meyers 候捷 电子工业 2011 刚才看到个会议时间有点晚,3.25论文都提交了 谷歌去广告的插件, 最后投了这个会议,刚刚好正合适.我说金钱与时间 ACCUSTOMING YO ...

  6. Effective C++读书笔记 摘自 pandawuwyj的专栏

    Effective C++读书笔记(0)       Start   声明式(Declaration):告诉编译器某个东西的名称和类型,但略去细节.   std::size_t numDigits(i ...

  7. effective c++第四章(条款18-25)

    第四章:设计与声明 设计与声明 条款18:让接口容易被正确使用,不易被使用(Make interfaces easy to use correctly and hard to use incorrec ...

  8. Effective C++改善程序与设计的55个具体做法笔记

    Scott Meyers大师Effective三部曲:Effective C++.More Effective C++.Effective STL,这三本书出版已很多年,后来又出版了Effective ...

  9. 《Effective C++》》阅读笔记

    第一章    Accustoming Yourself to C++ 1           View C++ as a federation of language (1).             ...

  10. Paper:2020年3月30日何恺明团队最新算法RegNet—来自Facebook AI研究院《Designing Network Design Spaces》的翻译与解读

    Paper:2020年3月30日何恺明团队最新算法RegNet-来自Facebook AI研究院<Designing Network Design Spaces>的翻译与解读 导读: 卧槽 ...

最新文章

  1. win+Ubuntu双系统重装win出现error:unknown filesystem grubrescuegt;
  2. 公积金联名卡——提取公积金用,用身份证即可办理
  3. 线程之线程共享成员变量的几种情况
  4. iis 7 php_Windows server 2008 下基于IIS7配置php7.2运行环境
  5. solr analyzer_查看您的Solr缓存大小:Eclipse Memory Analyzer
  6. 关于统计时间切片标签的一些sql
  7. Python Error: “ImportError: No module named six”,用自动安装解决依赖问题
  8. 促促促,如何确保系统扛得住 | 《尽在双11》抢鲜预览
  9. java pdf tiff_关于java:使用iText将tiff文件转换为pdf文件时出现异常
  10. scrum敏捷开发流程介绍和心得
  11. KVM虚拟化的概述和部署
  12. 最全最新的的Java核心知识点整理!!! 【推荐】
  13. 2022_WWW_Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning
  14. 远程桌面时,如何登录没有设置密码的系统
  15. Android音频焦点及混音策略
  16. python3收邮件_认真对待 Python3 收邮件
  17. 仅需一步,完美解决 0xc000007b 报错
  18. html css 奥运五环,用css写一个有趣的奥运五环~。
  19. Android仿京东、淘宝商品详情页上拉查看更多详情
  20. Java中 -1l1是多少?

热门文章

  1. 从零学React Native之11 TextInput
  2. 检查radio/checkbox是否至少选择一项
  3. C/C++中的static和extern关键字
  4. Android应用程序反编译
  5. 10.软件架构设计:大型网站技术架构与业务架构融合之道 --- 事务一致性
  6. 3.Jenkins 权威指南 --- 设置构建作业
  7. 18.输入和输出函数
  8. 计算机一级a河北,2009年河北省计算机一级考试A卷
  9. linux 查看libevent 安装目录,关于Linux下libevent库的基础安装和使用
  10. android finish 判断当前_Android开发,源码分析finish()和onBackPressed()的区别