我認爲這是相當語言無關的,但如果我錯了,那麼去C#(或C或C++)。如何處理「簡單」魔法值?
用 「簡單」 魔力值,我的意思是這樣的事情:
if (Value > 0)
或
while (Value < 0)
或
while (MyQueue > 0)
在寫本(上面的僞代碼)還挺讓我感到它確實只適用於與0相比的東西。
無論如何,處理這些魔法值的最佳方式是什麼(考慮可讀性,創建鍵名/鍵盤/代碼的數量)?
感覺就像極端的矯枉過正有一個完整的(靜態)類(或枚舉,在C#中)專用於此。
魔術數字並不是他們需要輸入多少個字符,而是他們的意思 - 它們在上下文中是否顯而易見並且是不變的。 – delnan
取決於這些幻數是否改變。例如:如果您想檢查隊列是否爲空,並且將隊列長度與0進行比較,則不必封裝0,因爲空隊列總是具有長度0.可以調整的參數值應該封裝在內部一個Enum/Class等等。如果你有一些複雜的條件,比如「如果隊列中沒有紅色的項目,這個隊列是空的」,寫一個像isEmpty(MyQueue)這樣的幫助函數。 – sled
是的,就像我寫的那樣,它真的只適用於你將一些東西(比如隊列!)與0進行比較,檢查列表/等中的長度/對象。 –