目录
前言
我们已经入门了C++的基础,那么我们就应该知道C++是如何设计程序的,这样才可以再后面深入学习的时候,给把知识运用到自己所思考的思路中
一,引言
在编写程序的时候,先不要具体的写代码,而是首先设计程序,你需要用到什么样的数据结构,要编写什么类等等,磨刀不误砍柴工,在项目初期的时候,我们花一些时间去做设计,会大大节省项目的生命周期
读完本次文章你该学习到的知识:
1,编程设计的定于
2,编程设计的重要性
3,C++所特有的一些设计问题
4,实现有效C++设计的两种基本原则:抽象与重用
5,C++程序设计的具体组件
二,什么是编程设计
程序设计和软件设计就是程序体系结构的规范,要实现这个规范来满足程序的功能和性能的需求,所谓设计就是你打算如何编写程序,一般需要以一份设计文档的形式完成,这个文档主要包括两个部分:
1,将程序分为多个子系统,包括子系统之间的接口和依赖关系,子系统之间的数据流,在各子系统之间来回的输入和输出,以及总的线程模型
2,各个子系统里面的具体细节,包括进一步细分的类,类层次体系,数据结构,算法,特定的模型和错误处理细节等
设计里面通常包含一些图表,用来显示子系统交互和类层次体系
我们在写程序的时候,我们总是要保留一些余地来为后续做准备,因为后续我们也不知道会出现什么bug,但是要预测出来留有余地,方便后续我们的更改代码
三,编程设计的重要性
由于专业的术语我们很难懂,所以我们以盖房子为例子,有一次你让一个工程师为你盖房子,你想看看盖房子的蓝图,好让自己有个预期,但是工程师说他盖过很多的房子,自己心里有数,你看这个工程师自信满满的样子,你也就交给他了,过来几天你发现房子外面出现了一些管线,一般来说墙内走线才正常,你去质疑工程师,工程师说他忘记在墙上留下管线的空间了,但是刚刚相出这个的净墙的技术,即使这个做错了,但是还是可以工作的,但是尽管已经对他的方法存在质疑,但是你还是选择了相信,到后面厨房居然没有水池,建筑工人发现在建厨房2/3的时候,没有给水池留空间,但是我们又不想返工,就在隔壁案例一个单独的水池间,这样也是可以的
当你去编写程序的时候是不是也是这样去解决你程序里面的问题呢,没有设计好,通过别的方法解决,即使怪怪的,但是还是有那样的功能,但是我们项目可不能这样马虎,因为我们是多人项目,不是个人项目
比如多个线程共享的队列的数据结构,你忘记了在其中设置加锁机制,你就用来别的方法,每个人在自己的程序进行加锁机制,这样也是可以,但是当你招募员工的时候,别的员工以为你的线程那里有加锁机制,这样就会出现很多很多的bug,所以整体图尤为的重要,这个就相当是程序编写的大脑,如果我们陷入代码编写,就无法得到最优的设计
比如我们编写一个象棋的程序
设计的:
没设计的:
虽然两个看似都差不多,但是设计的是找到了每个棋子的规律的,比如车,马这种是有特殊走法的,但是一般都是移动,所以我们只需要把相同的部分统一起来,然后提升功能即可,这样就可以减少代码行数