编写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
相关产品推荐
相关产品推荐

