想学习单片机的同学可以关注、私信我或者在评论区回复我要入门。在工程中,C++比C的优势在于,可以很方便的实现一些设计约束。C语言需要用文档传递的设计约定,在C++用可以用语言特性来搞定。如果,一个项目靠你自己一个人独立完成,用C或用C++没有太大的区别。如果,一个项目需要大规模作战,那么在C++和C这两种语言中,C++优势太大。

打开网易新闻 查看更多图片

在开发项目中每个人的能力高低是非常不可控的。比如,公司准备上一个项目,你是项目负责人,要你自己预估开发人员配置,假如你需要50个老员工的水平的人搞十个月就能搞定。这个时候公司会对你说,给你招60个应届毕业生人员多了20%,同样也是十个月,你给我搞定。一般情况下,一个项目人员构成,一般是少数几个老手,一些熟手,一大堆新手。毕竟老板想花最少的钱办最好的事

实际项目中遇到的场景肯定复杂得多,之前有一个团队有一个组专职搞代码的架构约束,为什么要搞架构约束,还不是由于团队内的员工技能参差不齐,怕技术能力达不到的员工瞎搞。

在项目中最常见的架构设计就是分层设计,因为分层后特别容易理解,可维护性强,并且层与层之间还能解耦,代码也有一定的复用性。假定,我们现在需要做一个分层设计,架构约束如下:

A B C三个模块属于第一层

D E F三个模块属于第二层

第一层的可以任意调用第二层的模块,但是同一层的模块之间不能互相调用,比如:A可以调用D E F,但是A不能调用B和C。

此时,在C++语言下,我们可以给每个模块赋予一个全局唯一的ID,比如ID_A、ID_B、ID_F。然后,每个模块通过构造函数去获取另一个模块的指针的时候,传入自己的ID,就能很方面的判断是否能够拿到目标模块的指针,如果不能拿到就返回null。关于模块依赖关系可以写成一个cpp文件,编译后以库的形式发布,那么普通员工也不具备修改依赖关系的权限,这样就能够做到举例中的架构约束。

我没有参与过以C为编程语言的大型项目,不知道具体是怎么做架构约束以保证架构和代码不腐化,但是有一点可以肯定的是,如果没有能从语言层面解决架构约束问题,那么就需要第三方工具来做约束,如果没有第三方工具来做约束,就只有靠文档和代码检视。当然,从语言层面解决架构问题,是效率最高的方式,文档和代码检视是效率最低的,也是没有办法的办法。

本期先分享到这里,想要进群学习单片机编程的同学可以私信我,回复“我要入门”,与我们一起成长,喜欢的可以点个赞关注我们!