2013-02-22 54 views
1

我聽說過故事的兩端。一種觀點是使用數值變量的特殊值來表示特殊狀態是設計缺陷。但是,我總是遇到這種行爲。在特殊情況下使用保留變量值是不好的做法嗎?

一個例子是一個字節無符號整數,其中值255表示缺少信息。

這是不好的做法?如果是這樣,在哪些特殊情況下允許/鼓勵?

+0

我想答案取決於語言...... – assylias 2013-02-22 11:31:59

回答

0

這絕對是而不是這是一種不好的做法,假設您可以負擔得起,即可表示整數的範圍具有足夠的額外值,您在實際情況中永遠不需要使用該值。例如,如果你需要全部的無符號字節,包括255,那麼賦予255一個新的含義「未知」將是一個問題。如果255從未用於「真實」數據,那麼您可以自由地爲其分配任何您想要的含義。

然而,什麼是錯誤的是在整個代碼中使用特殊數字,而沒有指定它們的特殊名稱。例如,

if (myByte == 255) { 
    // Process the situation when the value is unknown 
} 

毫無疑問是壞的。你應該命名你所有的特殊常量,並且在你的代碼中只使用這些名字:

if (myByte == UNKNOWN_VALUE) { 
    // You can skip the comment about processing an unknown value: 
    // the name of the constant tells your readers what's going on. 
} 
1

這很大程度上取決於情況;一如既往地努力寫出最簡單,最容易理解的方式。希望異常的情況處理不會混淆正常情況下的代碼(這是異常背後的想法,但他們創造了他們自己的混亂......)。

選擇用於例外情況的值時要小心。例如,C/Unix慣例使用了這一點,但確保使用「不可能」的值。因此,getchar(3)返回一個字符代碼作爲int,但返回一個非字符EOF作爲文件結尾。同樣,read(2)返回讀取的字符數(如果不需要讀取,可以爲0),或者錯誤時返回-1。

相關問題