1.新书到手
今天又到手一本新书《谈谈方法》(又称《方法论》),此书的作者是笛卡尔,本书介绍了笛卡尔是如何运用自己的理性在各门学科里寻求真理的方法。
勒内·笛卡尔(1596年3月31日-1650年2月11日),法国著名的哲学家、数学家、物理学家。他还是西方现代哲学思想的奠基人之一,他的哲学思想深深影响了之后的几代欧洲人,并为欧洲的“理性主义”哲学奠定了基础。笛卡尔最为世人熟知的是其作为数学家的成就。他发明了现代数学的基础工具坐标系,将几何和代数相结合,创立了解析几何学。
2.笛卡尔方法四原则
笛卡尔总结的四条原则原文如下:
第一条是:凡是我没有明确地认识到的东西,我绝不把它当成直的接受。也就是说,要小心避免轻率的判断和先人之见,除整分明地呈现在我心里、使我根本无法怀疑的东西以外,不要多一点别的东西到我的判断里。
第二条是:把我所审查的每一个难题按照可能和必要的分成若干部分,以便一一妥为解决。
第三条是:按次序进行我的思考,从最简单、最容易认识的象开始,一点一点逐步上升,直到认识最复杂的对象;就连那些来没有先后关系的东西,也给它们设定一个次序。
最后一条是:在任何情况之下,都要尽量全面地考察,尽量普遍地复查,做到确信毫无遗漏。
分析笛卡尔的四条原则:
第一条:怀疑一切自己不清楚的事物,不接受权威。
第二条:将复杂问题分解成多个简单问题,然后分开解决。
第三条:将问题从简单到复杂排列,先从容易解决的问题入手。
第四条:问题解决后,再全面的综合起来检验。
3.嵌入式设计中如何使用笛卡尔方法
本人是一名嵌入式工程师,如何将笛卡尔方法运用到嵌入式设计中,做到知行合一呢?我们吸收并演化笛卡尔的四个原则:
第一条原则的核心是慎重引入。对于新引入的代码需要进行审核和测试,即使是官方提供的代码。
第二条原则的核心是分治。将代码分解成多个独立功能的任务。简称分治。
第三条原则的核心是分层。将每个任务分成多个系统层,系统层从简单到复杂。
第四条原则的核心是透明性。设计代码时需要考虑代码全方位测试,提高代码的透明性,设计测试脚本,全面测试代码。
3.1慎重引入
任何新引入代码都需要单独对代码进行审核和测试。即使是官方提供的代码在完成独立测试前,也不能直接合入项目代码。有时候官方提供的库也会有出问题:
2022年4月5日, JavaScript 库is-promise 进行了更新,由于最新版本没有遵循正确的 ES
模块标准,使得超过300万个引用了is-promise的前端项目均出现了问题,这个问题甚至让整个 JavaScript 生态系统陷入了混乱。
3.2分治
分治就是将整个软件先按照功能拆分成多个任务(模块),分治策略可以将复杂难以实现的任务分解成多个简单容易实现的任务。
分解后的每个任务完成一个特定的功能,每个任务只关注自己负责的功能,而不关注其他任务的功能。每个任务需要把完成特定功能的所有相关代码全部包含在其内部,这样使得任务完全可以独立运行,不依赖其他任务,实现了高内聚。
下图是一个网关项目的工程文件,从图中可以看出整个项目采用了“分治”策略,我们将整个项目分为多个任务,每个任务完成一个独立的功能,并且每个任务不依赖其他任务。
3.3分层
分层就是将一个复杂的软件功能可以可以水平分割成合理的多个子系统层,系统层从简单到复杂,从具体到抽象。
系统中的相关联的部分被集中放在同一个独立的层内。上层功能的实现需要调用下层的功能并得到回复,相邻的任何两层都符合客户与服务器的关系。下层为上层提供服务并为上层调用返回结果,即下层的功能是服务上层的。下层通常负责完成具体的操作,上层通常完成抽象的业务操作。
分层构架规则:
1、第n层只依赖下方第n-1层
2、第n层不依赖第第n+1层
3、第n层只为第n+1层提供服务
4、第n层通过接口使用第n-1层提供的服务分层的意思是将一个任务,抽象成从低到高的层次。
下图是一个网关项目的工程文件,从图中可以看出每个任务采用了分层策略。通常情况下我们将任务分为三层,第一层完成处理器寄存器相关的操作,第二层负责完成控制逻辑相关的操作,第三层负责完成和业务相关操作。
3.4透明性
透明性就是代码的行为能够被检测,代码没有阴暗的角落和隐藏的深度。代码的任何行为都能进行测试,代码不存在任何未知行为,换句话说就是可以从外部对代码的任何内部逻辑进行测试,在测试过程中根据代码的反馈我们可以预测结果。