嵌入式 C 编程设计模式
为嵌入式系统创建干净且可维护的固件代码的设计模式
讲师:Martin Schröder
双语IT资源独家Udemy付费课程,独家中英文字幕,配套资料齐全!
用不到1/10的价格,即可享受同样的高品质课程,且可以完全拥有,随时随地都可以任意观看和分享。
您将学到什么
- 代码的可读性和可维护性
- 出色的代码重用
- 清晰的软件架构
- 轻松的代码审查
探索相关主题
- 设计模式(软件)
- 软件工程
- 发展
要求
- 熟悉 C 编程语言
描述
为什么需要设计模式
-
干净且可维护:设计模式帮助我们编写干净、健壮且可维护的代码。
-
增强代码重用:模式帮助您分离依赖关系并使代码保持井然有序。
-
主动预防错误:设计模式给出了明确的期望,使我们能够更轻松地审查和推理大量代码。
-
消除歧义:始终使用相同的模式可以消除代码结构和行为的歧义。
-
有效的 DevOps 所必需的:应用众所周知且可理解的模式的代码易于审查。
-
使细节落到实处:设计模式有助于组织代码,使小的实现细节更容易落到实处。
当我们开发嵌入式软件时,我们一次又一次地看到同一类问题。遗留代码的维护成本很高,更改一段代码会导致其他地方的行为发生意外变化,代码会以意想不到的方式中断。
所有这些都会导致源代码的处理难度成倍增加。
归根结底,这是因为缺乏编写软件的清晰架构指南。诸如“我们如何定义对象?”或“每个对象应该具有哪些基本方法?”之类的问题。编译器不会强制执行这些要求,而且可能永远不会。我们必须通过清晰的指南和代码审查来强制执行这些要求。
这就是为什么我们制定了适用于每个项目的指导方针列表,并确保所有开发人员都知道这些指导方针,并在代码审查期间相互指出未遵循这些指导方针的情况。这样一来,代码就会变得干净、易于维护、易于测试且易于理解。
我们使用设计模式来阐明软件结构以及我们对该结构的期望。
设计模式对于实现高效的 DevOps 至关重要,因为它们直接减少了审查新代码所需的时间。当团队中的每个人都使用设计模式并同意其使用时,每个人也都知道当新代码遵循已知模式时会有什么结果。
设计模式帮助我们编写干净、健壮且可维护的代码。
课程概述
我们将从一个简短的介绍开始,我会向您解释如何学习本课程、在哪里可以找到额外的资源以及每个模块是如何构成的。
然后,我们将介绍创建模式,它处理数据对象的构造。创建模式帮助我们以标准化的方式创建新对象并处理内存所有权的责任。
之后,我们深入研究处理代码结构的结构模式。这些模式帮助我们构建代码,以便我们可以轻松地用新功能扩展它,而无需稍后重构它。
行为模式是与代码“行为”相关的部分,例如返回值模式。这些模式帮助我们确定在不同常见情况下代码的行为。
最后,并发模式将让您直观地了解嵌入式 RTOS 上的并发,以便您了解何时使用哪种并发模式来实现应用程序的高响应能力。
介绍
-
简介。在本节中,我们将介绍开始前需要的有用信息、在哪里可以找到本培训的代码示例、如何获取其他帮助以及在哪里可以询问有关本课程的问题。这是本课程的简要介绍。
创建模式
-
对象模式。这是一种将数据分组为可实例化和销毁的对象的方法。我们还介绍了类和成员函数的概念。
-
不透明模式。此模式为我们提供了三种方法,使对象的实现私有化,并仅向对象公开句柄。这也可以称为不透明对象模式。
-
单例模式。单例模式是一种设计模式,用于确保一个类只有一个实例,同时为该实例提供全局访问点。
-
工厂模式。工厂设计模式是一种创建型设计模式,它提供了在超类中创建对象的接口,但允许子类改变将要创建的对象的类型。
结构模式
-
回调模式。处理绑定到对象实例的面向对象回调。允许回调对特定对象实例进行操作。
-
继承模式。继承模式用于实现 C 程序中对象和组件之间的继承关系。它是一种创建对象层次结构的方法,而不必管理所有细节都处于同一抽象级别的大型应用程序。
-
虚拟 API 模式。虚拟 API 模式是一种在 C 中实现虚拟函数并使不透明对象句柄也变得“智能”的方法。虚拟 API 模式为我们提供了多态性 – 我们可以在不了解这些实现的情况下将同一接口用于多个实现。
-
桥接模式。此模式建立在虚拟 API 模式之上,是需要桥接两个不同对象层次结构时使用的模式。我们将介绍 Rust 和 C 中的一个例子,看看如何在实践中使用此模式。
行为模式
-
返回值模式。此模式标准化了函数处理返回值的方式。这很有价值,因为 C 中的返回值是发出操作状态信号的主要方式。因此,我们必须有一种通过标准化返回值与调用者进行通信的明确方法。
并发模式
-
并发简介。在本节中,我们将并发本身视为软件开发的一种模式,以及何时以及为何我们应该将并发视为工具箱中一种有价值的工具。
-
自旋锁/中断屏蔽模式。屏蔽中断是数据完整性最简单的模式,它与保护中断访问的共享数据有关。这种模式的通用实现通常以自旋锁的形式完成。在这里,我们来看看如何通过确保在修改数据时不会运行中断来保护数据免受损坏。
-
信号量模式。信号量比自旋锁高一级,概述了中断处理程序和应用程序级线程(以及我们应用程序中的多个线程)之间的信号传输模式。在本模块中,我们将了解信号量的实际实现、其用例和重要注意事项。信号量是任何 RTOS 系统中最基本的线程感知同步原语。
-
互斥模式。互斥与信号量略有不同,它通过优先级继承来防止资源匮乏。它是应用程序线程应使用的主要模式,用于与其他线程互斥地访问资源。在本模块中,我们将研究互斥的实现、其工作原理以及它与其他原语实现的不同之处。
-
条件变量模式。条件变量模式建立在互斥模式之上,用于实现从另一个线程或中断处理程序发出信号并唤醒一个或多个线程的方法。此模式可用于以安全的方式检查响应异步事件的任意复杂条件。
这是为谁准备的
本次培训适用于:
-
嵌入式软件架构师:即使您已经编码多年,您仍然可以在这些内容中找到如何更好地做事的想法。
-
初级嵌入式程序员:模式可以帮助您组织代码,最好的起点就是从一开始就是。
-
嵌入式管理器:由于模式对代码结构有很大影响,因此整个团队很好地理解和应用模式非常重要。
报名时间到了!
本课程适合哪些人:
- 专业嵌入式工程师
- 从事系统级软件工作的软件开发人员
- 从事工业自动化工作的 C 程序员
- IoT 产品固件开发人员
如果你有能力,请务必支持课程的原创作者,这是他们应得的报酬!
本站收取的费用,仅用来维持网站正常运行的必要支出,从本站下载任何内容,说明你已经知晓并同意此条款。