【问题标题】:Are there names for these two approaches to structuring code?这两种结构化代码的方法有名称吗?
【发布时间】:2013-12-09 15:57:48
【问题描述】:

我在嵌入式系统中使用 C 语言进行了大量编程。不久前,我正在向同事解释我的代码,以减少我们的总线因素。我们开始讨论我构建代码的方式。我的代码往往更像这样:

while(1){
     //read the inputs
     input1 = pin4
     input2 = pin5

     //define the mode
     if (input1) mode = CHARGE;
     else if (input2) mode = BOOST;
     else mode = STANDBY;

     //define outputs
     if (mode == CHARGE) output1 = 1;
     else output1 = 0;

     if (mode == BOOST) output2 = 1;
     else output2 = 0;
}

他的代码往往更像这样:

while(1){
    //handle first mode
    if (input1){
         mode = CHARGE;
         output1 = 1;
         output2 = 0;
    }

    //handle second mode
    else if (input2){
         mode = BOOST;
         output1 = 0;
         output2 = 1;
    }
}

两者在语义上是相同的,但是从 A 到 B 的方式完全不同。

本质上,我的结构是确保任何给定的变量只在代码中的一个位置尽可能地设置。显然,在某些情况下这是不可能的,例如长串顺序计算的结果。但总的来说,我发现这使我的代码更容易调试。如果某个特定变量的值有问题,那么该问题只能存在于一个地方。如果我发现我需要在一个变量和另一个变量之间插入中间标志,那么如果只有一个地方可以做到这一点会容易得多。

(我不知道我是怎么走到这一步的。我以前不习惯用这种方式编程。我想我是从很多 VHDL 痛苦中学到的,早在那天。)

我想知道,这两种结构化代码的方法是否有名称?进一步阅读它们的优缺点会很有趣。

【问题讨论】:

    标签: coding-style structure


    【解决方案1】:

    除了编码风格(也可能有其他含义)之外,我想不出一个特定的名称/定义。

    我必须说我更喜欢阅读第二版代码。

    我理解你为什么说版本 1 更容易调试,但随着项目的发展,你可能更喜欢更容易理解它的作用,而不是在遇到问题时更容易调试的东西,因为你错过了理解它... :)

    【讨论】:

      猜你喜欢
      • 2021-04-25
      • 2011-05-08
      • 1970-01-01
      • 2023-03-21
      • 2022-12-29
      • 2010-09-09
      • 2020-06-28
      • 2010-11-21
      • 1970-01-01
      相关资源
      最近更新 更多