2017-08-25 146 views
-1

我有一個方法可以解析一個字符串並將其轉換爲布爾值。 法律價值觀是「真實的」和「虛假的」。如何命名具有相同含義但不同類型的兩個變量

boolean convertStringToBoolean(String text) { 
    if (text.equals("true") { 
    return true; 
    } else if (text.equals("false")) { 
    return false; 
    } else { 
    throw new IllegalArgumentException(text); 
    } 
} 

當我使用這個變量時,我得到一個命名問題。

void doSomething(String isSpecificReadString) { 
    boolean isSpecificRead = convertStringToBoolean(isSpecificReadString); 
    ... 
} 

問題是該參數帶有一個意思,我想保留它的名字。 含義不會因爲類型改變而改變。 到目前爲止,我的解決方案只是將參數類型後綴。 但我不喜歡這個解決方案。

我該怎麼稱呼變量來解決這個問題?

+1

定義您從該方法調用的過載'doSomething的空隙(布爾isSpecificRead)';或者你直接調用,如'doSomething(convertStringToBoolean(text))'。 –

+0

這可以歸結爲一個意見的問題,所以SO是脫離主題。做你認爲最簡單,最清楚的事情,並堅持不懈,你會沒事的。 –

+1

當然,問題是:爲什麼'doSomething'首先接受''true「'/'」false「''String? –

回答

0

受Andy Turner啓發,我可以製作兩個doSomething方法。 一種採用String和另一種採用布爾值的方法。 然後String方法可以調用布爾方法。 如下:

void doSomething(String isSpecificRead) { 
    doSomething(convertStringToBoolean(isSpecificReadString)); 
} 

void doSomething(boolean isSpecificRead) { 
    ... 
} 
0

到目前爲止,我的解決方案只是將該類型後綴到參數。 但我不喜歡這個解決方案。

Java中的強類型語言以這種方式工作。
變量在運行時不能改變它們的類型。
您必須接受語言限制。

將方法中的數據從一個類型轉換爲另一個類型可能會導致此問題。
但是你的實際解決方案相當好。
意圖很明確,您保留目標變量的自然名稱。

您確實只爲將要轉換的輸入(臨時/中間變量)添加了類型後綴,而不是將用於下一個語句的輸出。

相關問題