当前位置: 首页 > news >正文

Single Responsbility Principle(SRP)

一. What is Single Responsibility Principle

相同的功能要高度内聚到一个类(结构体、函数、方法、模块等)中,关系不大的功能要分离开来进行解耦,即类(结构体、函数、方法、模块等)的定义应当高内聚,低耦合。


二. SRP error example

2.1 温度传感器

一个文件(sensor.c)、函数(readTemperatureSensor) 同时负责读取传感器、转换数据、滤波、校准和报警,职责过多,难以维护和测试。

// sensor.c - 违反 SRP 的典型嵌入式代码
#include "stm32f4xx_hal.h"
#include <math.h>// 混合了硬件访问、数据转换、过滤、校准、状态判断
float readTemperatureSensor(void) {static float last_value = 0;// 1. 硬件访问 - ADC 读取HAL_ADC_Start(&hadc1);HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);uint32_t raw_adc = HAL_ADC_GetValue(&hadc1);HAL_ADC_Stop(&hadc1);// 2. 原始值转换float voltage = (raw_adc * 3.3f) / 4096.0f;// 3. 传感器特性转换(NTC 热敏电阻)float resistance = 10000.0f * (3.3f / voltage - 1.0f);float temperature = 1.0f / (log(resistance / 10000.0f) / 3950.0f + 1.0f / 298.15f) - 273.15f;// 4. 低通滤波float alpha = 0.1f;temperature = alpha * temperature + (1 - alpha) * last_value;last_value = temperature;// 5. 校准偏移temperature += 1.5f;  // 固定校准值// 6. 检查温度是否超限if (temperature > 85.0f) {HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);  // 报警} else {HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);}return temperature;
}
http://www.jsqmd.com/news/403215/

相关文章:

  • Transformer 电商智能客服:从架构设计到性能优化的实战指南
  • 电商智能客服系统设计:从零搭建高可用对话引擎
  • 从零搭建智能客服工作流:基于Dify的实战入门指南
  • uniapp运行到鸿蒙手机模拟器因为文件夹中文名称报错
  • 具身智能:原理、算法与系统 第18章 模仿学习与人类示范
  • 扣子智能客服API新手入门指南:从接入到实战避坑
  • 企业智能客服平台大作业实战指南:从零搭建到性能优化
  • 基于模糊控制的改进动态窗口DWA算法功能介绍
  • 智能客服自动化问答系统实战:基于NLP与微服务架构的高效实现
  • 基于DeepSeek和RAG的智能客服系统:从零搭建到生产环境部署
  • 智能客服对接淘宝实战指南:从API集成到消息队列优化
  • 智能客服关键词匹配技术解析:从算法选型到生产环境优化
  • Python 办公自动化:批量处理 Excel/Word/PPT 实战教程
  • 影刀千牛智能客服系统架构解析与效率提升实战
  • 大规模语言模型在跨学科科学推理中的突破
  • 基于AI构建电话智能客服系统的架构设计与实战避坑指南
  • 智能客服系统产品经理实战指南:从需求分析到技术落地
  • 客服智能辅助系统实战:基于NLP的工单分类与自动回复架构设计
  • 提示工程架构师深度好文:Agentic AI如何实现跨平台与多设备协同
  • AI智能客服与知识库产品设计实战:从功能列表到原型实现
  • Chatbot为什么在各个领域需要:效率提升的技术实现与架构解析
  • 电商智能客服系统架构图:高并发场景下的效率优化实践
  • 智能客服系统MRCP入门指南:从协议解析到实战部署
  • 智能客服接入拼多多全流程实战:从API对接到生产环境部署
  • Python+微信API开发智能客服机器人:从接入到优化的全流程指南
  • 智能客服货盘系统实战:高并发场景下的架构设计与性能优化
  • 开源智能客服电话系统实战:从架构设计到生产环境部署
  • 智慧铁路轨道岔止冲器铁路要素识别分割数据集labelme格式7238张11类别
  • ChatGPT电脑版技术解析:从本地部署到性能优化实战
  • ChatGPT设备不兼容问题解析:AI辅助开发的跨平台解决方案