2016-04-18 21 views
2

想象我們有一個功能最佳實踐:是要考慮整函數結果爲布爾

static int do_job(int v) 
{ 
    return (v > 10); 
} 

然後在代碼的其他位置,我們做的是:

int job = /* some value */; 

if (do_job(job)) { 
    /* do something */ 
} 

if (!do_job(job)) { 
    /* do something */ 
} 

我知道我們可以做到這一點,但這是一個很好的做法嗎?

+0

爲什麼不'static bool do_job(int v)'? –

+0

人們通常會這樣做。但是,如果可以使用適當的類型 - 使用它們。爲了可讀性,自我記錄和可能的錯誤避免。 –

+1

我個人不喜歡這個。正確地使用我想要的更清楚。也就是說,「bool」爲true/false,「enum」爲不同的狀態,「int」爲int。儘管有時候'C'沒有'bool'類型,所以看到這樣的'C'代碼並不罕見。我不知道這個標準是否支持'bool',我敢肯定這裏有人知道。 – yano

回答

1

它可能不是一個很好的做法,因爲

(v > 10) 

可以從字面上只有兩個值:truefalse

小於int的類型可以用作do_job的類型,例如,

static bool do_job(int v) 

BOOL類型被定義成stdbool.h

這產生了更小的功能。

+1

這不是OP詢問的問題。無論如何,內部'bool'通常表示爲本地整數類型。 –

+4

'(v> 10)'評估爲'int'。 – alk

+0

@alk我不知道是否有一個很好的理由,除了歷史的... –