1、面向过程的结构化编程只是实现处理流程的结构化,而没有实现数据的结构化。
2、面向过程的分析方法实质就是分治法。从问题出发,自顶向下逐步求精利用算法作为基本构建块构建复杂系统的开发方法。可见单片机或嵌入式的编程,只是算法思想中分治的特例。这是从软件特质出发思考问题,将系统分划分为多个功能模块,同时尽量保持模块间耦合度最小,这种思维方式不能模拟现实中的世界,存在巨大缺陷。
面向对象作为对抗软件复杂性手段出现,其实还有“需求不断变化”的情形。
到了这个程序,就要懂得取舍,不可能每个基础的东西都在看一遍。哪些是有用,哪些是无用,应该能分得清楚了。
---2019-11-19 于济南
第2章程序设计技术,才是本书的精华。
函数指针是实现状态机杀手级应用。
在C中,使用函数指针来实现软件设计六大原则中的依赖倒置原则;即可以通过函数指针来调用服务,服务也可以通过函数指针回调用户函数。
再次回想下什么是指针函数??
当函数的返回值是一个指针时,则这个函数就是指针函数。
分层设计
隔离变化:分好层后,层与层间通讯按照一定的规则进行(好莱坞原则)
上层可以直接调用下层提供的函数,但下层不能直接调用上层的函数。且层与层间绝不允许循环调用;不允许跨层调用。即下层模块实现了在上层模块中声明并被高层模块调用的接口。这就是著名的 好莱坞扩展原则 。“不要调用我,让我调用你”。
当下层需要传递数据给上层时,则采用回调函数指针接口隔离变化。通过倒置依赖(DIP)接口的所有权,创建一个更灵活、更持久,更易于修改的结构。
多态:就是将函数名动态的绑定到函数入口地址的运行机制。
将所有变量所使用的区域称为栈,未分配的内存区域称为堆。
ADT可利用已经存在的原子数据类型构造新的结构,用已经实现的操作组合新的操作。用户程序除了通过接口中提到的操作之外并不访问任何数据值。
本书最大亮点是将软件开发的原则揉入到C代码中,由此可见,软件开发原则照样是适用于单片机程序的编写的。若用在嵌入式方面则显得 很不足,因为嵌入式是一个调度过程,更注重的是逻辑和流程,也就是补习下数据结构吧。
开闭原则(OCP)对扩展开放,对修改关闭,通常要求找出共性的抽象接口。
总结:大体看了一遍,讲的有些深度,是从C的角度来讲的。但后面用C解释UML的内容显然是有些怪怪的,但有利于搞硬件的人员一个直观的认识。另外,周立功还出了一本AWORKS的架构的书,不开源,可见他真的是将软件重用的思想用在了单片机领域。很符合自己路线。没法研究,因为人家不开源呀。只能先下下来看看