2013-12-09 62 views
2

我在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疼痛,回到了一天。)

我不知道,这两种构造代码的方法是否有名字?进一步阅读他们的优点和缺点将是有趣的。

回答

0

除了编码风格(这可能还有其他含义),我无法想出一个特定的名称/定义。

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

我明白你为什么说版本1更容易调试,但随着项目的增长,您可能更喜欢某些更容易理解其功能的东西,而不是因为您错过问题而更易于调试的东西了解它... :)

相关问题