architecture - 如何规划我的软件以避免过度重写和相互依赖

标签 architecture embedded 8-bit

我正在编写一个电机 Controller ,它有几个接口(interface)(按钮、蓝牙、触觉旋钮),这是一项稳步增长的任务,比我想象的要大。我试图从低级模块开始(例如,编写代码以在 I2C 总线上通信),然后是上面的模块(与 I2C 总线上的特定设备通信的代码......),但是很多时候,我不得不回到我的较低模块来处理我没有适应的怪癖。这要么需要很长时间,要么我会得到真正的 hack-ish 代码。

我的目标是 8 位 MCU,所以自下而上似乎我可以更好地利用硬件。如果我自上而下,我没有任何结构可以构建或测试/调试。

我已经尝试为特定级别/驱动程序绘制一些整体图和一些图,但我不确定如何构建它们,因此我可以非常系统地处理它并避免错过需要通过 2-3 的奇数信号层。

我想这就是CS学位的原因吗?我是一名电气工程师:P

最佳答案

听起来你在正确的轨道上。有时,再多的计划也不会阻止您在以后重新设计或重构系统的某些部分。尝试以下一些提示:

  • 将代码保存在由逻辑函数分隔的模块中。
  • 不要重复代码,而是为共享功能设计可重用的方法。
  • 尽量避免为特殊情况添加 hack 的诱惑。最终这将变得无法维护。相反,应尽快调整和重构小部分。最后尝试进行大规模的重新设计将更加困难。
  • 不要试图从一开始就过度设计系统,因为当您开始实际实现时,您可能只是在浪费时间。
  • 保持较低级别尽可能简单,然后在顶部构建更高级的功能。
  • 记录您的函数并编写一些单元测试,尤其是在添加复杂的条件语句之后。
  • 尝试在堆栈中尽可能高地捕获错误。例如进行输入验证和检查返回值。这将使调试更容易。
  • 关于architecture - 如何规划我的软件以避免过度重写和相互依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3472405/

    相关文章:

    java - 注入(inject)设置还是加载一次全局查找?

    git - 如何将 Git 存储库中可用的包添加到 Buildroot?

    command-line - CALL -151在APPLE上做了什么?[

    java - 如何重构 validator

    design-patterns - 决定开发生命周期

    python - 为什么 C、C++ 和 LISP 在嵌入式设备和机器人中如此流行?

    embedded - 当断点停止代码执行时定时器/自动收报机会发生什么

    java - 如何将 BufferedImage 转换为 8 位?

    java - 如何获得 8 位颜色?

    java - 应用架构设计问题