片头
最近和一群朋友聊天,不知不觉就聊到软件设计的依据的问题,有的说依据就是需求,有的说依据就是代码规范,有的说依据就是公司规定,虽然大家都做了差不多10年设计,水平是有的,但是也没高到天上去。主要还是受限于所处环境及工作行业性质,有的朋友还不知道有6个设计原则。也许这个6个设计原则太高端,底层涉及不到。因此在这里想把高大上的6个设计原则拉下“水”,与低端的单片机程序设计做个 “联姻”。六个设计原则分别是:A、单一职责原则;B、开闭原则;C、里氏替换原则;D、最少知识原则;E、接口隔离原则;F、依赖倒置原则;G、激活原则;
以上有7个,最后一个是我加上去的,此文主要介绍第一个设计原则:单一职责原则,单一职责在设计STM32单片机软件的应用。
正文
定义:顾名思义,职责重在单一,防止过尤尔不及(概念很重要)。
要做的“单一职责原则”首要任意就是解决(确定)范围,即单一职责的软件单位。那么在单片机软件开发中的职责单一的软件单位是什么呢一个函数,一个结构体,一个枚举定义,一个软件模块(XXX.c与XXX.h)。
一个不遵循“单一职责原则”的函数如下:
void getResult(u8 Data1,u8 Data2,u16 *sum,u8 *max)
{
*sum= Data1+ Data2;
if(Data1> Data2) *max= Data1;
else *max= Data2;
}
以上代码简单:实现两个数据的求和,还有找出两个数据最大者,它们做了两件事,所以不符合 “单一职责原则”;改成如下即可。
void getSum(u8 Data1,u8 Data2,u16 *sum)
{
*sum= Data1+ Data2;
}
void getResult(u8 Data1,u8 Data2, u8 *max)
{
if(Data1> Data2) *max= Data1;
else *max= Data2;
}
以上的代码比较简单些,下面以环形缓存作为一个例子阐述单一职责原则。环形缓存是常用的一个软件组件,单片机中常应用通信,ADC采样数据的缓存等。环形缓存的效果图如下:
所谓“单一职责原则”,就是功能单一,以上代码是STM32单片机下的“环形缓存”软件组件(也可以叫软件模块),从整个模块来说功能单一,从函数来说功能也是单一。至此单一职责原则介绍到此,下次介绍“开闭原则”在单片机代码中的应用,希望对大家有帮助,高手请跳过,谢谢。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!