You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写LCD屏驱动库时LCD_Clear_Screen如何设计符合整洁代码规范

设计方案建议

直接把光标定位逻辑写到LCD_Clear_Screen()内部是更合理的设计,完全不违反单一职责原则。

你对单一职责原则的理解存在小偏差:它要求的是一个函数只承担同一上下文下的一项对外职责,而非要求一个函数只能执行单个最细粒度的硬件操作。

核心判断依据

  • 首先符合最小惊讶原则:上层调用者使用LCD_Clear_Screen()的核心预期就是得到一个清空完成、可以直接输入内容的屏幕。官方文档明确清屏必须先移动光标到起始位置,如果你把这步操作抛给调用方手动处理,反而会给普通用户埋坑——只要有人漏写光标定位步骤,就会出现清屏异常,大幅提升了库的使用成本。
  • 其次没有违反单一职责:LCD_Clear_Screen()的唯一职责始终是「完成符合硬件规范的可用清屏操作」,内部调用LCD_Put_Cursor_In_Position(0, 1)只是复用已有的细粒度逻辑,并没有额外实现光标定位的功能,也没有新增额外的对外职责,完全符合规则。
  • 如果要兼顾极特殊场景的需求,可以额外新增一个细粒度接口:
    • 普通场景默认用LCD_Clear_Screen(),内部自带光标复位,覆盖99%的使用需求
    • 确实需要自定义清屏后光标位置的特殊场景,再提供LCD_Clear_Screen_Without_Reset_Cursor()这类明确语义的接口,不要让普通用户为低频场景承担额外的操作成本。

内容的提问来源于stack exchange,提问作者yeuop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:39:03