2014-02-17 87 views
0

這只是我正在尋找的設計提示。我有一個函數,它可以增加或減少一個值之前有一些過程。 我應該做出單獨的函數還是隻有一個函數,並通過標誌來指示它是增加還是減少一個值?可以通過標誌指示修改(增加或減少)值的函數嗎?

void increment_xxx_counter(some arg) 
void decrement_xxx_counter(some arg) 

OR

void modify_xxx_counter(some arg, bool flag) 
{ 
    if(flag) 
    {} 
    else 
    {} 
} 
+1

做什麼使得它更易於閱讀。 –

+1

在六個月中,你會記得'modify_counter(&c,true)'是指遞增還是遞減?並且:對這個函數的90%或更多的調用會有一個常量作爲第二個參數嗎? – rici

+0

我不知道C有'bool's,我只是親自使用'boolean' ... – haneefmubarak

回答

0

也許,這可能是最好的:

void modify_XXX_counter (some *arg, int flag) { 
    switch (flag) { 
     case 1: 
      // increment counter 
      ... 
      break; 
     case -1: 
      // decrement counter 
      ... 
      break; 
     default: 
      // handle bad invocation 
      ... 
      break; 
    } 

    return; 
} 

這將使你可能指定更大的增量(如有必要,只需添加其他情況下) ,同時也保持你的代碼可讀。當然,如果你可以簡單地使用原子函數和全局變量,這將是最好的:

var++; 
1

我會看在你的應用程序使用的其他接口開始。如果有一個類似的「修改」功能,我會設計這個功能,以一種合理的方式進行匹配。否則,如果我覺得需要一個功能,我可以使用單一功能的方法:

xxx_inc(some *arg, int value); 

通過這種方式,它更容易理解什麼是閱讀的代碼怎麼回事。例如:

timer_inc(&t, 1); 
    timer_inc(&t, -1); 
    -or- 
    timer_thing_inc(&t, 1); 
    timer_thing_inc(&t, -1); 

取而代之的是不那麼明顯:

timer_modify_thing(%t, true);