cpp编程惯用法--抽象

来源:互联网 发布:多商家入驻旅游 源码 编辑:程序博客网 时间:2024/04/29 14:22

cpp编程惯用法

学过cpp primer ,写过一些例子,还是容易迷失在文案的海洋里面。

我觉得我已经成了一个用class写c的php程序员。还按照这个方法,完成了个项目,

完成项目的过程中真是有点头大,不过写着写着渐渐的熟悉,回过头来发现两点

1 需要对c++语法中常用的部分进行总结。2 需要懂得每个项目里面的内存模型,对象什么时候产生,做了什么事情,什么时候销毁3 需要更多的了解智能指针4 需要更多的了解c++ 线程编程方面的知识

是有点迷失,所以需要一本更加精炼的书,这个时候我发现了c++编程惯用法,毫无疑问,这是本好书,至少对我来说。

第一部分《抽象》

设计是迭代的,我们需要不断的思考,考虑是什么?为什么?记录边界,记录下关键点。

面向对象,是对数据的抽象ADT,通过抽象出数据,对外提供接口,对内提供实现。

通过public(接口)和private(实现)了ADT,ADT使程序更加容易维护

程序都可以被划分成:ADT和ADT的实现

记录下ADT的好处:

有助于类更好的设计它是你和用户的协议记录过程中我们可能发现问题清晰文档有利于重构理解ADT有利于避免以实现驱动的设计

性能和ADT的平衡?

我们需要明白自己是设计ADT还是实现ADT?

建立抽象模型过程就是权衡:什么该有?什么不该有的过程?

0 尽可能理解你需要处理的对象,尽可能抓住关键点1 明白什么应该出现在模型中2 如果存在疑问,暂时不要考虑,因为扩展总是比修改多余的部分更加容易

没有出现在抽象模型中的东西和出现在抽象模型的东西都一样重要,需要取舍

抽象模型间的关系,自己问自己问题,想象场景-如果不对,及时更正

抽象模型间的关系 一对一,一对多,多对一,还是多对多

多少才算多?考虑数量问题

如何保证关系会随着时间的变化而变化

is-a 属于,子类型化,派生类是一个父类的子类,a属于b这个集合

例如法拉利跑车属于汽车

has-a a包含b这个集合,a拥有b,电脑拥有键盘

use-a 两个对象间的相互联系

关系是单向的还是双向的?

关系在c++中通常通过指针实现,双向的开销更大,单向更简洁表现力差

是否有着多重关系

关系是否必要

我们需要考虑边界

假设条件是否有效?假设在什么条件下成立?假设失败?

可以通过卡片或者uml图记录 抽象模型

0 0
原创粉丝点击