开发者格言:站会和代码审查中的智慧
多年来从事嵌入式开发,积累了一些短语,逐渐升华为格言。这些格言捕捉了微控制器编程、电路设计和项目管理的真实情况。这里精选自12年一线经验:从代码原则到MCU外设。
关于代码和架构的格言
程序员分两派:从零写代码的,和移植开源库的。计算机作为计算设备的通用性是教科书定义——不过并非每个物理与技术专业的毕业生都认可。
关键原则:
- 一切皆配置:最好的代码就是配置。
- 代码分离,配置分离。
- 好代码经年累月结晶而成。
- 写作遵循最小惊奇原则。
- 最好的算法就是表格(有限状态机归根结底就是图和表)。
“编程是一场马拉松,不是短跑。”(Robert Martin)
代码一致性胜过美观:“统一写代码——丑点也没关系。”数组是一切的基础。每个setter都需要getter:xxx_write() 对应 xxx_read()。函数名就是其注释。注释越少,git diff 越干净。
在C语言中:如果一个函数放不进一个屏幕,可能就不工作。任何任务都能一行解决——函数调用。最好的注释是文件名。
测试和CI/CD
没有CI的仓库就是废纸一张。构建系统必须统一,无论用什么编辑器。没有单元测试的代码?同理。
“未经测试的程序不算工作。”(Bjarne Stroustrup) “TDD是专业人士的选择。”(Robert Martin)
知识要书面传承,便于顺利交接。可移植代码库是未来项目的基石。所有协议归根结底就是设备间的memcpy。
电路设计和硬件
硬件工程师调侃:像CPU一样——拒绝过压。电气工程是研究缺失连接的科学。开发从调试工具开始。
所有传感器都在测温度,只不过方式各异。超过100 MHz,信号就变模拟了。电子学中一切都是ADC或DAC:编解码器、收发器,甚至GPIO作为1位DAC。
接口选择:SPI优于I2C。俄罗斯人设计给欧洲代码用的板子,欧洲人为中国板子写代码。最好的元件是没有元件。
微控制器和固件
硬件优先,软件其次。原理图越简单,固件越棘手——反之亦然。没有硬件的固件就像凭照片雕刻。
外设同步核心时钟。固件从引导加载程序起步。一复位解决七烦恼。杀手级功能?固件更新。
通用协议越来越多:从12种到13种。汇编就像用镊子吃荞麦。NVRAM能升级任何东西。UART-CLI必备:没有它,就是插上祈祷。
UART日志是固件的黑匣子。MCU是捣碎数字的臼;x86是搅拌机。CLI激发创造力,GUI把你框死。有限状态机是MCU的金锤。
合格的MCU需要:运行时间计时器、心跳LED、UART-CLI、NVRAM、单元测试。否则就是无谓枷锁。固件不会自己写。
模块化意味着同时构建多平台。
管理和项目
我们构建它不是因为简单,而是因为以为简单。教的一半东西是废话——诀窍是分辨哪个(Larrabee定律)。
按规格开发:别镀金。谈判就是工作。“按要求什么都不做”?任务完成。
“负面结果也是结果。”(Niels Bohr)
坏方案配好报告最终会被砍;好方案配坏报告当场毙命(Akin定律)。管理就是别挡道。
质量权衡最终会正向平衡。别给狗拴上油箱。现在找bug胜过货架上发现。头脑风暴?就是想法烤肉。
构建的不是他们要的,而是他们需要的。完美是优秀的敌人。坏事自会发生。快而糙被记作糙;慢而牢被记作牢(Korolev)。
关键要点
- 代码必须可移植且可测试:TDD、单元测试、统一CI。
- 嵌入式中:UART-CLI、日志、有限状态机——调试必备。
- 硬件优先:简单板子让软件更易。
- 项目按规格,文档书面。
- 继任规划:知识固化,仓库整洁。
— Editorial Team
暂无评论。